2017-10-11 109 views
-2

我有以下通過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

回答

3

什麼你打電話這裏map(x -> x.getKey())實際上是Map.Entry.getKey

所以也許嘗試這個

map(Map.Entry::getKey) 
1

只需詢問地圖的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); 
相關問題