例如,是否可以在番石榴中创建偶数范围? 类似的东西:
Range.closed(0,10) //0,2,4,6,8,10
我知道上面的行不会产生所需的输出,但这样的事情可能是:
Range.closed(0,10, SomeFunctionInterface<Integer>);
其中
interface SomeFunctionInterface<T>{
T computeNext(T first);
}
番石榴有可能吗?这仍然是一个连续的范围,只是在其上应用了某个规则。
我只对番石榴溶液感兴趣。
答案 0 :(得分:6)
如果你一起组成两个操作,Guava可以支持这个。首先,创建集{0,1,2,3,4,5,6,7,8,9,10}。然后,你过滤它。
要将Range
转换为未经过滤的中间集,请创建ContiguousSet
。为此,您需要DiscreteDomain
,这基本上就是您所描述的SomeFunctionInterface
。由于您正在处理整数,因此可以使用内置的DiscreteDomain.integers()
。
要从那里到只有偶数的集合,你可以写一个Predicate
然后将它传递给Sets.filter
。