gpt4 book ai didi

java - 在集合中查找单个对象,HashMap vs List filter

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:11:43 25 4
gpt4 key购买 nike

我生成了 Customer 的列表从我阅读的文件中。我将这些客户存储在 HashMap 中其中键是一个唯一的 id :

Map<String, Customer> customers = readCustomers();
//For each object created
customers.put(c.getCustomerId(), c);

我从第二个文件中获取用于更新 HashMap 中对象的数据.我使用 key 来查找要更新的对象:

//get the details informations
customers.get(customerId).setDetails(details);

在 java 8 中我可以使用:

class Customer{
...

public static Customer find(List<Customer> customers, int id) {
return customers.stream().filter(c -> c.customerId == id).findAny().get();
}
}

//usage
List<Customer> customers = readCustomers();
...
Customer.find(customers, 21).setDetails(details);

使用 Java 8 方法会提高性能吗?这些方法之间的最佳实践是什么?

最佳答案

在 HashMap 中通过键搜索值需要 O(1) 的预期时间,这比在 List 中搜索相同值的 O(n) 更快。

使用 Java 8 Streams 并没有改变这一点,因为在花哨的新语法的幕后,它仍然迭代 List 的元素,直到找到匹配项。

关于java - 在集合中查找单个对象,HashMap vs List filter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30260649/

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