我有如下的 map :
class Person {
Long personId;
String name;
/*Getters and Setters*/
}
我填充了 map Map<Long, Person> personMap = new HashMap<>();
map 的关键是 personId 本身。 我有一个这样的 personIds 列表,
List<Long> coolPeople = new ArrayList<>();
现在我想遍历 map 并获取所有具有与列表中的 id 对应的键的值 coolPeople
,然后将其存储在列表中。
如何在 Java 8 中以最佳方式实现这一点?
最佳答案
迭代 List
的标识符会更有效并在 Map
中查找它们, 因为在 HashMap
中按键搜索需要预期O(1)
时间,同时在 List
中搜索可以拿O(n)
最坏情况下的时间。
List<Person> people =
coolPeople.stream()
.map(id -> personMap.get(id)) // or map(personMap::get)
.filter(Objects::nonNull)
.collect(Collectors.toList());
关于java - 根据键列表过滤 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43848984/