当前位置: 首页 > 知识库问答 >
问题:

Java 8-转换列表的最佳方法:map还是foreach?

文心思
2023-03-14

我有一个列表MyListTopRaster,我希望在其中筛选元素并对每个元素应用一个方法,然后将结果添加到另一个列表MyFinallist中。

在Java8中,我注意到我可以用两种不同的方法来实现它。我想知道它们之间更有效率的方式,并理解为什么一种方式比另一种方式更好。

我愿意接受任何关于第三条路的建议。

myFinalList = new ArrayList<>();
myListToParse.stream()
        .filter(elt -> elt != null)
        .forEach(elt -> myFinalList.add(doSomething(elt)));

方法二:

myFinalList = myListToParse.stream()
        .filter(elt -> elt != null)
        .map(elt -> doSomething(elt))
        .collect(Collectors.toList()); 

共有1个答案

丁震博
2023-03-14

不要担心任何性能差异,在这种情况下,它们通常是最小的。

方法2是优选的,因为

>

  • 它不需要对lambda表达式之外的集合进行突变。

  •  类似资料:
    • 问题内容: 我有一个列表,我想在其中过滤元素并在每个元素上应用一个方法,然后将结果添加到另一个列表中。 使用Java 8,我注意到可以用2种不同的方式来做到这一点。我想知道它们之间更有效的方法,并理解为什么一种方法比另一种更好。 我愿意就第三种方式提出任何建议。 方法1: 方法2: 问题答案: 不必担心任何性能差异,在这种情况下,通常它们会很小。 方法2是可取的,因为 它不需要变异lambda表达

    • 我尝试了这种方法,但得到了强制转换异常,不能将字符串转换为整数。

    • 从Java 8开始,所以需要一点时间来适应它。这是一个经典的问题,我有一个想要转换的对象数组。 在Java8之前,理想的代码是(没有空指针): Java8中最好的版本是什么?

    • 问题内容: 复制列表的最佳方法是什么?我知道以下方法,哪种更好?还是有另一种方法? 问题答案: 如果要浅拷贝(不复制元素),请使用: 如果要进行深层复制,请使用复制模块:

    • 问题内容: 将列表/元组转换为dict的最佳方法是什么,其中键是列表的不同值,而值是这些不同值的频率? 换一种说法: (我不得不多次执行上述操作,标准库中是否有适合您的内容?) 编辑: Jacob Gabrielson指出2.7 / 3.1分支的标准库中有一些内容 问题答案: 有点儿 通常效果很好。

    • 我必须以JSON格式转换数据表单以发送到webAPI。 我有一个从第1页调用的弹出表单: 第1页有以下代码: 输出JSON不正确。代码返回如下字符串: ! DOCTYPE html 什么是最好的方法来字符串化输入数据?我哪里错了?