通过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); 
+2

你看过[地图文档](https://docs.oracle.com/javase/7/docs/api/java/util/Map.html)吗?你可以使用'Map#keySet'方法,它返回一个'Set',但这不应该是一个问题。 – Shirkam

+1

当你只对按键感兴趣时,使用'.entrySet()'没有任何意义。只需从一开始就使用'keySet()',就可以完全避免从'.map(x - > x.getKey())'步骤。另一方面,你根本不需要流操作。如果你确实需要'List'快照而不是'keySet()'视图,那么你可以简单地使用'List result = new ArrayList (map.entrySet());'。 – Holger

什么你打电话这里map(x -> x.getKey())实际上是Map.Entry.getKey

所以也许尝试这个

map(Map.Entry::getKey) 

只需询问地图的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);