gpt4 book ai didi

java - 如何创建 com.google.common.collect.Range 改变一个布德?

转载 作者:行者123 更新时间:2023-11-30 08:49:37 24 4
gpt4 key购买 nike

我需要创建新的 Range 对象,只更改一个(下限或上限)边界。其他绑定(bind)必须不变。

最方便的方法是什么?

我看到方法 com.google.common.collect.Range#range(C lower, BoundType lowerType, C upper, BoundType upperType),但是当我需要更改 lower 时,我必须复制 upper我范围内的值 - 如果 upperBound 存在,请小心。

它看起来很丑(下面的例子)。我需要类似的代码来更改上限。有更简单的方法吗?

if (range.hasUpperBound()) {
range = Range.range(value, BoundType.CLOSED, range.upperEndpoint(), timeSpend.upperBoundType());
} else {
range = Range.upTo(value, BoundType.CLOSED);
}

最佳答案

我带来了以下通用辅助方法(它们创建了我需要的双闭范围)

 private static <T extends Comparable> Range<T> withLowerBound(Range<T> range, 
T lowerEndpoint) {
if (range.hasLowerBound()) {
return Range.closed(lowerEndpoint, range.upperEndpoint());
} else {
return Range.atLeast(lowerEndpoint);
}
}

private static <T extends Comparable> Range<T> withUpperBound(Range<T> range,
T upperEndpoint) {
if (range.hasLowerBound()) {
return Range.closed(range.lowerEndpoint(), upperEndpoint);
} else {
return Range.atMost(upperEndpoint);
}
}

因为Range是不可变的,所以必须按如下方式使用它们

myRange= setLowerBound(myRange, newLowerValue);
myRange= setUpperBound(myRange, newUpperValue);

关于java - 如何创建 com.google.common.collect.Range 改变一个布德?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31340538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com