通过Java中的方法引用将映射转换为列表8
问题描述:
我有以下通过Java 8将映射转换为列表的方式,但我想用方法引用代替lambda,请告知如何转换下面的程序以利用Java的8通过Java中的方法引用将映射转换为列表8
下面的方法引用功能是我的程序
Map<Integer, String> map = new HashMap<>();
map.put(10, "apple");
map.put(20, "orange");
map.put(30, "banana");
map.put(40, "watermelon");
map.put(50, "dragonfruit");
System.out.println("\n1. Export Map Key to List...");
List<Integer> result = map.entrySet()
.stream()
.map(x -> x.getKey())
.collect(Collectors.toList());
System.out.println(result);
答
只需询问地图的keySet()
即可。它返回一组键。
Map<Integer, String> map = new HashMap<>();
map.put(10, "apple");
map.put(20, "orange");
map.put(30, "banana");
map.put(40, "watermelon");
map.put(50, "dragonfruit");
System.out.println("\n1. Export Map Key to List...");
Collection<Integer> result = map.keySet();
System.out.println(result);
你看过[地图文档](https://docs.oracle.com/javase/7/docs/api/java/util/Map.html)吗?你可以使用'Map#keySet'方法,它返回一个'Set',但这不应该是一个问题。 – Shirkam
当你只对按键感兴趣时,使用'.entrySet()'没有任何意义。只需从一开始就使用'keySet()',就可以完全避免从'.map(x - > x.getKey())'步骤。另一方面,你根本不需要流操作。如果你确实需要'List'快照而不是'keySet()'视图,那么你可以简单地使用'List result = new ArrayList (map.entrySet());'。 –
Holger