Java 番石榴按规则连续分布
例如,是否可以在番石榴中创建一系列偶数? 比如:Java 番石榴按规则连续分布,java,guava,Java,Guava,例如,是否可以在番石榴中创建一系列偶数? 比如: Range.closed(0,10) //0,2,4,6,8,10 我知道上面这一行不会产生所需的输出,但类似的情况可能是: Range.closed(0,10, SomeFunctionInterface<Integer>); Range.closed(0,10,SomeFunctionInterface); 在哪里 interface SomeFunctionInterface<T>{ T comp
Range.closed(0,10) //0,2,4,6,8,10
我知道上面这一行不会产生所需的输出,但类似的情况可能是:
Range.closed(0,10, SomeFunctionInterface<Integer>);
Range.closed(0,10,SomeFunctionInterface);
在哪里
interface SomeFunctionInterface<T>{
T computeNext(T first);
}
interface SomeFunctionInterface{
T computeNext(T first);
}
用番石榴可以吗?这仍然是一个连续的范围,只是对其应用了某个规则
我只对番石榴汁感兴趣 如果您将两个操作组合在一起,番石榴可以支持这一点。首先,创建集合{0,1,2,3,4,5,6,7,8,9,10}。然后,你过滤它 要将
范围
转换为中间的未过滤集,请创建一个。为此,您需要一个离散域
,它基本上就是您描述的SomeFunctionInterface
。因为您处理的是整数,所以可以使用内置的
要从那里得到只有偶数的集合,您可以编写一个
谓词
,然后将它和中间集合传递给。如果您将两个操作组合在一起,Guava可以支持这一点。首先,创建集合{0,1,2,3,4,5,6,7,8,9,10}。然后,你过滤它
要将范围
转换为中间的未过滤集,请创建一个。为此,您需要一个离散域
,它基本上就是您描述的SomeFunctionInterface
。因为您处理的是整数,所以可以使用内置的
要从那里得到只有偶数的集合,您可以编写一个
谓词
,然后将它和中间集合传递给。“这仍然是一个连续的范围,只是对其应用了某个规则。”这不是真的,因为它是一个整数
的范围,0和2等不是连续的整数
对象。如果要创建一个EvenInteger
类型和一个DiscreteDomain
(注意:不要这样做),我想它可能是该类型的一个连续范围。Guava的Range
期望有一种标准的方法来比较您想要使用的每种Java类型,而ContiguousSet
期望有一种标准的DiscretedDomain
@colin,您让我重新思考了这一点,我认为这是绝对正确的。从javadoc中可以看出:“范围是凸的:每当包含两个值时,它们之间的所有值也必须包含在内。更正式地说,对于任何c1,“这仍然是一个连续的范围,只是对其应用了某个规则。”这不是真的,因为它是Integer
s的范围,0和2等不是连续的Integer
对象。如果要创建一个EvenInteger
类型和一个DiscreteDomain
(注意:不要这样做),我想它可能是该类型的一个连续范围。Guava的Range
期望有一种标准的方法来比较您想要使用的每种Java类型,而ContiguousSet
期望有一种标准的DiscretedDomain
@colin,您让我重新思考了这一点,我认为这是绝对正确的。从javadoc中可以看出:“范围是凸的:每当包含两个值时,它们之间的所有值也必须包含在内。更正式地说,对于任何c1 FWIW,这会给你一个Set
,而不是Range
(还有FWIW,它是特意设计的,所以你不能得到Range
,因为科林上面讨论的原因。)是的,我出于好奇,把你的问题扭曲成了我可以回答的东西:),你能用套装过日子吗?或者可以使用谓词
,该谓词是通过将原始范围
(其本身实现了谓词
)与isEven
谓词组合而成的?也许可以将系统中需要范围的部分更改为使用其中一个范围。(如果没有,我们可以尝试给你一些其他的建议,如果你想更详细地填写你的要求。)@ChrisPovirk thx,没有任何要求:)这只是一个好奇。其实我会接受的,因为没有办法。不是我想要的答案,但足够接近。干杯FWIW,这给了你一个集合
,而不是范围
(而且FWIW,出于科林上面讨论的原因,它是特意设计的,所以你不能得到范围
。)是的,我把你的问题扭曲成了我可以回答的东西:)出于好奇,你能用集合
?或者可以使用谓词
,该谓词是通过将原始范围
(其本身实现了谓词
)与isEven
谓词组合而成的?也许可以将系统中需要范围的部分更改为使用其中一个范围。(如果没有,我们可以尝试给你一些其他的建议,如果你想更详细地填写你的要求。)@ChrisPovirk thx,没有任何要求:)这只是一个好奇。其实我会接受的,因为没有办法。不是我想要的答案,但足够接近。干杯