我有一个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
的值中获取所有不同的值?
答案 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并收集为列表。
它不需要重新添加到列表中。