gpt4 book ai didi

java - 使用收集器使用临时变量

转载 作者:行者123 更新时间:2023-11-30 02:25:33 25 4
gpt4 key购买 nike

我有以下代码。我试图了解它是否会对内存造成任何改变。

方法1:使用收集器我可以直接返回 map ,如下所示:

    List<Customer> customerList = new ArrayList<>();
customerList.add(new Customer("1", "pavan"));
customerList.add(new Customer("2", "kumar"));

return customerList.stream().collect(Collectors.toMap(t->t.getId(), t->t));

方法 2:使用显式映射来收集结果,如下所示:

   Map<String,Customer> map = new HashMap<String, Customer>();  
map = customerList.stream().collect(Collectors.toMap(t->t.getId(), t->t));
return map;

与第一种方法相比,如果我迭代超过一百万次,第二种方法对内存/GC 是否有任何影响?

最佳答案

除了实例化第二个示例中不需要的 Map 实例之外,这两段代码是相同的。您立即将创建的 Map 引用替换为流返回的引用。编译器很可能会将其作为冗余代码消除。

streams API的collect方法会为你实例化一个Map;代码已经得到了很好的优化,这是使用 Stream API 相对于自己动手的优势之一。

要回答您的具体问题,您可以根据需要多次迭代这两部分代码,这不会对 GC 影响产生任何影响。

关于java - 使用收集器使用临时变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45727076/

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