我要执行以下操作:

List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList());

但是以某种方式得到的列表是Guava的ImmutableList的实现。

我知道我能做
List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList());
List<Integer> immutableList = ImmutableList.copyOf(list);

但我想直接收集。我试过了
List<Integer> list = IntStream.range(0, 7)
    .collect(Collectors.toCollection(ImmutableList::of));

但它引发了一个异常(exception):

最佳答案

可接受的Alexis答案中的toImmutableList()方法现在包含在Guava 21中,可以用作:

ImmutableList<Integer> list = IntStream.range(0, 7)
    .boxed()
    .collect(ImmutableList.toImmutableList());

编辑:@Beta中删除了ImmutableList.toImmutableList以及Release 27.1(6242bdd)中的其他常用API。

10-04 12:10