番石榴连续的范围

时间:2013-04-22 07:28:28

标签: java guava

例如,是否可以在番石榴中创建偶数范围? 类似的东西:

Range.closed(0,10) //0,2,4,6,8,10

我知道上面的行不会产生所需的输出,但这样的事情可能是:

Range.closed(0,10, SomeFunctionInterface<Integer>);

其中

 interface SomeFunctionInterface<T>{
      T computeNext(T first);
 }

番石榴有可能吗?这仍然是一个连续的范围,只是在其上应用了某个规则。

我只对番石榴溶液感兴趣。

1 个答案:

答案 0 :(得分:6)

如果你一起组成两个操作,Guava可以支持这个。首先,创建集{0,1,2,3,4,5,6,7,8,9,10}。然后,你过滤它。

要将Range转换为未经过滤的中间集,请创建ContiguousSet。为此,您需要DiscreteDomain,这基本上就是您所描述的SomeFunctionInterface。由于您正在处理整数,因此可以使用内置的DiscreteDomain.integers()

要从那里到只有偶数的集合,你可以写一个Predicate然后将它传递给Sets.filter