java
Map<String, Integer> map = new HashMap<>();
map.put("zhangsan", 1);
map.put("lisi", 2);
map.put("wangwu", 3);
map.put("zhaoliu", 4);
map.put("tianqi", 5);
map.put("sunba", 5);
map.put("zhouba", 5);
List<String> result = map.entrySet().stream()
.filter(e -> e.getValue() >= 5) // 过滤value >= 25
.collect(Collectors.toMap(
Map.Entry::getKey, // key -> age
Map.Entry::getValue, // value -> name
(existing, replacement) -> existing // 去重保留第一次出现
))
.entrySet().stream()
.sorted((e1, e2) -> e2.getKey().compareTo(e1.getKey())) // 按age降序
.limit(3)
.map(e -> e.getValue() + "(" + e.getKey() + ")")
.collect(Collectors.toList());
System.out.println("relust=========" + result);
}
常规调试:
在这里加断点
无法看到流转过程,不便于排查
方式一:
在流的开头和结尾分别加断点,启动debug:
点击最右侧按钮
点进去就可以看到清晰的流转过程。
方式二:
使用.peek()输出日志
java
//...
.sorted((e1, e2) -> e2.getKey().compareTo(e1.getKey())) // 按age降序
.peek(System.out::println)
.limit(3)
//...
来展示一些中间的流转过程