我有一个Map<String, String>
我想流式传输List<String>
中的所有值,我称之为keys
。
我怎么能得到这个从映射返回值?
像这样映射:
("Frank", "Car")
("Bob", "Bike")
("Jim", "Truck")
我给它的键列表:
["Frank","Jim"]
预期结果:
["Car","Truck"]
我试过了,但它只是打印键而不是值。
keys.stream()
.filter(map::containskey)
.collect(Collectors.toList())
您只需检查,如果键存在于Map
中,如果它们存在,则将它们保留在结果流中。要用值替换键,可以使用map()
public static void main(String[] args) {
Map<String, String> cars = new HashMap<>();
cars.put("Frank", "Car");
cars.put("Bob", "Bike");
cars.put("Jim", "Truck");
List<String> keys = new ArrayList<>();
keys.add("Frank");
keys.add("Jim");
List<String> result = keys
.stream()
.filter(cars::containsKey)
.map(cars::get)
.collect(Collectors.toList());
System.out.println(result);
}
输出:
[Car, Truck]
流式传输并过滤条目:
map.entrySet().stream()
.filter(e -> keys.contains(e.getKey()))
.map(Map.Entry::getValue)
.collect(Collectors.toList())