簡體   English   中英

如何轉換地圖 <Integer, List<String> &gt;到地圖 <Integer, Set<String> &gt;

[英]how to convert Map<Integer, List<String>> to Map<Integer, Set<String>>

Map<Integer, List<String>> mapList = new TreeMap<>();
Map<Integer, Set<String>> mapSet = new TreeMap<>();
        Set<String> set = new TreeSet<>();
        for (Map.Entry<Integer, List<String>> entry : entriesSortedByValues(mapList)) {
            set.addAll(entry.getValue());
            mapSet.put(entry.getKey(), set);
        }

它不起作用。 我想將mapList復制到mapSet。

您繼續為所有鍵添加和修改相同的對象。

您當前的工作可以這樣查看:

在此處輸入圖片說明

因此,要解決此問題,請在循環的每次迭代中創建一個新的Set。

Map<Integer, List<String>> mapList = new TreeMap<>();
Map<Integer, Set<String>> mapSet = new TreeMap<>();
for (Map.Entry<Integer, List<String>> entry : entriesSortedByValues(mapList)) {
    Set<String> set = new TreeSet<>();
    set.addAll(entry.getValue());
    mapSet.put(entry.getKey(), set);
}

您也可以使用將集合作為參數的構造函數。

Map<Integer, List<String>> mapList = new TreeMap<>();
Map<Integer, Set<String>> mapSet = new TreeMap<>();
for (Map.Entry<Integer, List<String>> entry : entriesSortedByValues(mapList)) {
    mapSet.put(entry.getKey(), new TreeSet<>(entry.getValue()));
}

您可以使用HashSet的構造函數將List轉換為Set,例如new HashSet<String>(myList);

Map<Integer, List<String>> mapList = new TreeMap<>();
Map<Integer, Set<String>> mapSet = new TreeMap<>();

   for (Map.Entry<Integer, List<String>> entry : entriesSortedByValues(mapList)) {
        Set<String> set = new HashSet<String>(entry.getValue());
        mapSet.put(entry.getKey(), set);
   }

在您的for循環中添加Set

    for (Map.Entry<Integer, List<String>> entry : entriesSortedByValues(mapList)) {
        Set<String> set = new TreeSet<>();
        set.addAll(entry.getValue());
        mapSet.put(entry.getKey(), set);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM