您可以使用比較和對比寫代碼,基於HashSet的尺寸如下值進行排序:
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.TreeMap;
public class Solution {
public static void main(String[] args) {
Map<String, HashSet<Integer>> map = new HashMap<String, HashSet<Integer>>();
HashSet<Integer> aSet = new HashSet<>();
aSet.add(1);
aSet.add(2);
aSet.add(3);
aSet.add(4);
aSet.add(5);
map.put("a", aSet);
HashSet<Integer> bSet = new HashSet<>();
bSet.add(1);
bSet.add(2);
bSet.add(3);
bSet.add(4);
map.put("b", bSet);
HashSet<Integer> cSet = new HashSet<>();
cSet.add(1);
cSet.add(2);
cSet.add(3);
cSet.add(4);
cSet.add(5);
cSet.add(6);
cSet.add(7);
map.put("c", cSet);
System.out.println(map);
Map sortedMap = sortByValue(map);
System.out.println(sortedMap);
}
public static Map sortByValue(Map unsortedMap) {
Map sortedMap = new TreeMap(new ValueComparator(unsortedMap));
sortedMap.putAll(unsortedMap);
return sortedMap;
}
}
class ValueComparator implements Comparator {
Map map;
public ValueComparator(Map map) {
this.map = map;
}
public int compare(Object keyA, Object keyB) {
HashSet<Integer> valueA = (HashSet<Integer>) map.get(keyA);
HashSet<Integer> valueB = (HashSet<Integer>) map.get(keyB);
Integer valASize = valueA.size();
Integer valBSize = valueB.size();
return valASize.compareTo(valBSize);
}
}
'TreeMap'各種各樣的關鍵,而不是價值。它期待一個'比較器<?超級整數>'。 – shmosel