番石榴连续的范围

Eug*_*ene 0 java guava

例如,是否可以在番石榴中创建偶数范围?就像是:

Range.closed(0,10) //0,2,4,6,8,10
Run Code Online (Sandbox Code Playgroud)

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

Range.closed(0,10, SomeFunctionInterface<Integer>);
Run Code Online (Sandbox Code Playgroud)

哪里

 interface SomeFunctionInterface<T>{
      T computeNext(T first);
 }
Run Code Online (Sandbox Code Playgroud)

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

我只对番石榴解决方案感兴趣.

Chr*_*irk 6

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

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

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