gpt4 book ai didi

java - 使用 Stream 还是 Loop 之间的决定

转载 作者:搜寻专家 更新时间:2023-10-30 21:06:49 25 4
gpt4 key购买 nike

通过用 Java 编写应用程序,java.util.Collection 有很多用例。由于 java.util.stream.Stream 是在 Java 8 中引入的,我遇到了一些难以决定使用什么的用例。

例如:您将编写一些实用方法。

public static List<?> filterHashToList(int hash, Collection<?> toFilter) {
return toFilter.stream()
.filter((Object o) -> hash == o.hashCode())
.collect(Collectors.toCollection(LinkedList::new));
}

这样写怎么样:

public static List<?> filterHashToList(int hash, Collection<?> toFilter) {
List<Object> result = new LinkedList<>();

for(Object o : toFilter) {
if(hash == o.hashCode()) {
result.add(o);
}
}

return result;
}

两种方法都会产生相同的结果。 java.util.stream.Streamjava.util.stream.Collector 是接口(interface),因此如果我使用自定义流和收集器,实现也会有所不同。

我认为有大量使用老式循环方式的实现。

那么,是否有可能通过用例来回答使用什么,流或循环?如果是这样,是否必须在适当的时候更新所有实现?

或者我是否应该通过实现 util-methods 来提供这两种方式?或者我是否还应该提供一个在过滤过程后返回流的方法,以便您在需要时也可以使用那个流?

最佳答案

如果没有发布答案,我将引用 Brian Goetz谁回应了我的观点,我怀疑很多其他人的观点。

There's nothing magic about either streams or loops. You should write the code that is most readable, clear, and maintainable. Either of these are acceptable.

关于java - 使用 Stream 还是 Loop 之间的决定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32670309/

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