【发布时间】:2020-03-08 02:18:43
【问题描述】:
所以我创建了这个 HashMap 并继续使用 lambda 和 Stream 对其进行过滤:
public class engineMain {
public static void main(String[] args) {
CarEngine engineOne = new CarEngine("A named Engine", 2000, 8, "E10");
CarEngine engineTwo = new CarEngine("Another named Engine", 2200, 6, "E10");
String a = "Another named Engine";
HashMap<String, CarEngine> hmap = new HashMap();
hmap.put(engineOne.getEngineName(), engineOne);
hmap.put(engineTwo.getEngineName(), engineTwo);
hmap.entrySet().stream().filter(e -> e.getValue().getEngineName().contains(a))
.forEach(e -> System.out.println(e));
}
}
如何改进我的最后一行代码,使其返回过滤后的值?现在它返回:Another named Engine=javaapplication40.CarEngine@6ce253f1
我也尝试过这种方式
HashMap<String, CarEngine> map = new HashMap<>();
map.entrySet().stream().filter(x -> x.getKey().equals(a))
.flatMap(x -> ((Map<String, CarEngine>) x.get(a)).values().stream())
.forEach(System.out::println);
【问题讨论】:
-
您正在打印一个空行。应该是
e -> System.out.println(e) -
你期望多少价值?
-
@YCF_L 只有一个
-
你能显示你期望的输出吗?您可能应该在
CarEngine类中实现toString()。 -
只有一个
CarEngine或EntryMap?
标签: java oop collections hashmap java-stream