相关疑难解决方法(0)

如何在Java中生成连续整数的列表或数组?

是否有一种简短而甜蜜的方式来生成一个List<Integer>或者一个 Integer[]或者int[]从某个start值到end值的连续值?

也就是说,短于,但相当于以下1:

void List<Integer> makeSequence(int begin, int end) {
  List<Integer> ret = new ArrayList<>(end - begin + 1);
  for (int i=begin; i<=end; i++) {
    ret.add(i);
  }
  return ret;  
}
Run Code Online (Sandbox Code Playgroud)

番石榴的使用很好.

更新:

绩效分析

由于这个问题已经收到了几个很好的答案,无论是使用本机Java 8还是第三方库,我都认为我会测试所有解决方案的性能.

第一个测试只是[1..10]使用以下方法测试创建10个元素的列表:

  • classicArrayList:上面在我的问题中给出的代码(和adarshr的答案基本相同).
  • eclipseCollections:下面使用Eclipse Collections 8.0 在Donald的回答中给出的代码.
  • guavaRange:daveb下面的答案中给出的代码.从技术上讲,这不是创造一个List<Integer>而是创造一个ContiguousSet<Integer>- 但由于它Iterable<Integer>按顺序实现,它主要用于我的目的.
  • intStreamRange:下面的Vladimir的答案中给出的代码,它使用了IntStream.rangeClosed()- 这是在Java 8中引入的.
  • streamIterate …

java arrays collections apache-commons guava

105
推荐指数
5
解决办法
8万
查看次数

使用Java 8 Streams API随机播放整数列表

我尝试使用Streams API将以下Scala行转换为Java 8:

// Scala
util.Random.shuffle((1 to 24).toList)
Run Code Online (Sandbox Code Playgroud)

要在Java中编写等效项,我创建了一系列整数:

IntStream.range(1, 25)
Run Code Online (Sandbox Code Playgroud)

我怀疑toList在流API中找到了一个方法,但IntStream只知道奇怪的方法:

collect(
  Supplier<R> supplier, ObjIntConsumer<R> accumulator, BiConsumer<R,R> combiner)
Run Code Online (Sandbox Code Playgroud)

如何使用Java 8 Streams API对列表进行混洗?

java scala java-stream

26
推荐指数
4
解决办法
2万
查看次数

标签 统计

java ×2

apache-commons ×1

arrays ×1

collections ×1

guava ×1

java-stream ×1

scala ×1