将list <object>转换为java 8流中的<id>数组

时间:2018-01-10 07:24:12

标签: java-8 java-stream

所以我有用户类

User{
    id
    name
}

&安培;我需要将List<User>转换为使用流的数组,所以我正在做的一种方法是转换为列表然后转换为数组

coll.stream().map(am -> am.getId())
             .collect(Collectors.<Integer>toList())
             .toArray(new Integer[0])

但我认为应该有另一种方法直接转换为数组而不是添加列表然后转换为数组。

2 个答案:

答案 0 :(得分:10)

您可以使用Stream中的<A> A[] toArray(IntFunction<A[]> generator)

Integer[] ids = coll.stream()
    .map(am -> am.getId())
    .toArray(Integer[]::new)

将从流而不是列表创建数组。

答案 1 :(得分:4)

除非有充分的理由收集你可能正在寻找的Integer[]

int[] ids = coll.stream()
                .mapToInt(User::getId)
                .toArray();