Java中是否有任何方法可以通过步骤1或其他长度初始化一个集合?

wea*_*ver 12 java

例如,我喜欢初始化一个类似[1,2,3,...,100]的集合.

通常,我们做如下:

for(int i = 1;i <= 100;i++ ){
    set.add(i);
}
Run Code Online (Sandbox Code Playgroud)

有没有方法可以更方便地做到这一点?

someMethod(startIndex, endIndex, step);

通过使用它,我们可以轻松地初始化[1,2,3,4,5]或[1,3,5,7,9]或其他集合.

Era*_*ran 19

您可以使用Java 8 Streams.

例如 :

Set<Integer> mySet = IntStream.range(1,101).boxed().collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)

或仅限奇数:

Set<Integer> mySet = IntStream.range(1,101).filter(i->i%2==1).boxed().collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)
  • IntStream.range 是一种获取给定范围内数字的简便方法.
  • 然后,如果您只想要一些数字,则可以应用过滤器.
  • 最后,您可以将它们收集到您想要的任何收藏中.

  • 对于奇数,你也可以做一些像`IntStream.iterate(1,i - > i + 2).limit(51)......`. (7认同)
  • `IntStream.iterate(1,i - > i + 2).limit(51)`不太可读.你必须计算才能理解它(而不是只读"100"),并且它容易出现一个一个错误.实际上,这个流也包括`101`. (3认同)
  • @Keppil如果你的问题是"获得前51个奇数元素",那就没关系了.如果你的问题是"从1到100得到奇数",那就不是了. (2认同)