gpt4 book ai didi

java-8 - 在java流api中指定收集器初始容量的优雅方式

转载 作者:行者123 更新时间:2023-12-04 15:19:28 24 4
gpt4 key购买 nike

我试图找到一种在java流api中设置收集器初始容量的好方法。最简单的例子是:

data.stream()
.collect(Collectors.toList());

我只想将一个具有列表大小的 int 传递给收集器,以免调整内部数组的大小。第一个意图是这样做:
data.stream()
.collect(Collectors.toList(data.size()));

但不幸的是 toList 没有重载以使用参数。我找到了一个解决方案,但它闻起来:
 data.stream()
.collect(Collectors.toCollection(() -> new ArrayList<>(data.size())));

有没有更简单的表达方式?

最佳答案

我会接受你的不雅

Collectors.toCollection(() -> new ArrayList<>(data.size()))

并将其包装在静态方法中
public static <T> Collector<T, ?, List<T>> toList(int size) {
return Collectors.toCollection(() -> new ArrayList<T>(size));
}

然后调用它(使用静态导入)
stream.collect(toList(size))

!不雅?

编辑(这确实使它成为 ArrayList )这很糟糕吗?

关于java-8 - 在java流api中指定收集器初始容量的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41069206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com