从hashMap值获取ID列表的最佳方法

时间:2018-08-28 02:59:12

标签: java lambda collections java-8 java-stream

我有一个HashMap,其中Integer作为键,List<Employee>作为值。我想从Ids的所有Values中获取所有HashMap

List<Long> ids = new ArrayList<>();
    hm.forEach((key, value) -> {
        List<Integer> c = value.stream()
                .map(Employee::getId).collect(Collectors.toList());
        ids.addAll(c);
     }

到目前为止,这是我正在尝试做的事情。 有没有一种方法可以直接从HashMap的值中获取所有不同的值?

2 个答案:

答案 0 :(得分:3)

import re
players_and_teams = []

for i in soup.find_all('td'):
    if i.find_all('a'):
        for link in i.find_all('a'):
            if not re.findall(r'Preview',link.text):
                players_and_teams.append(link.text)

由于您仅对ID感兴趣,因此流式传输hm.values() .stream() .flatMap(List::stream) .map(Employee::getId) .collect(Collectors.toSet()); 的{​​{1}},由于每个都是values,因此您将使用HashMap,休息可能很明显。同样,由于您所说的这些是截然不同的,因此返回类型List更有意义。

如果您仍然需要flatMap,请使用:

Set

答案 1 :(得分:0)

List<Long> ids = hm.values().stream().map(Employee::getId).collect(Collectors.toList());

在这里,我们要做的是获取值作为流,并映射员工ID并收集为列表。

它不需要重新添加到列表中。