如何将Java 8 IntStream转换为List?

时间:2014-05-15 09:43:22

标签: java java-8

我正在查看IntStream的文档,我看到toArray方法,但无法直接转到List<Integer>

肯定有办法将Stream转换为List

4 个答案:

答案 0 :(得分:471)

IntStream.boxedIntStream变为Stream<Integer>,然后您可以collect进入列表:

theIntStream.boxed().collect(Collectors.toList())

答案 1 :(得分:16)

你也可以在Stream上使用mapToObj(),它接受一个I​​ntFunction并返回一个对象值Stream,它包含将给定函数应用于该流元素的结果。

List<Integer> intList = myIntStream.mapToObj(i->i).collect(Collectors.toList());

答案 2 :(得分:9)

您可以使用Eclipse Collections中可用的原始集合并避免装箱。

MutableIntList list = 
    IntStream.range(1, 5)
    .collect(IntArrayList::new, MutableIntList::add, MutableIntList::addAll);

注意:我是Eclipse Collections的撰稿人。

答案 3 :(得分:1)

找到以下示例,使用Java 8查找每个int元素的平方:-

IntStream ints = Arrays.stream(new int[] {1,2,3,4,5});       
List<Integer> intsList = ints.map(x-> x*x)
          .collect(ArrayList<Integer>::new, ArrayList::add, ArrayList::addAll);