こんにちは私は次のコードを使用してHashMapを並べ替えています。マップは正しく並べ替えられますが、繰り返される値はカウントされません。
Map<String, Integer> mymap = new HashMap<String, Integer>();
mymap.put("item1", 5);
mymap.put("item2", 1);
mymap.put("item3", 7);
mymap.put("item4", 1);
Map<String, Integer> tempMap = new HashMap<String, Integer>();
for (String wsState : mymap.keySet()) {
tempMap.put(wsState, mymap.get(wsState));
}
List<String> mapKeys = new ArrayList<String>(tempMap.keySet());
List<Integer> mapValues = new ArrayList<Integer>(tempMap.values());
HashMap<String, Integer> sortedMap = new LinkedHashMap<String, Integer>();
TreeSet<Integer> sortedSet = new TreeSet<Integer>(mapValues);
Object[] sortedArray = sortedSet.toArray();
int size = sortedArray.length;
for (int i = 0; i < size; i++) {
sortedMap.put(mapKeys.get(mapValues.indexOf(sortedArray[i])),
(Integer) sortedArray[i]);
}
for (Map.Entry<String, Integer> entry : mymap.entrySet())
System.out.println("Item is:" + entry.getKey() + " with value:"
+ entry.getValue());
System.out.println("***");
for (Map.Entry<String, Integer> entry : sortedMap.entrySet())
System.out.println("Item is:" + entry.getKey() + " with value:"
+ entry.getValue());
結果は次のようになります(アイテム4の値はitem2と同じであるため、アイテム4は表示されていません!!!):
Item is:item4 with value:1
Item is:item2 with value:1
Item is:item3 with value:7
Item is:item1 with value:5
***
Item is:item2 with value:1
Item is:item1 with value:5
Item is:item3 with value:7
これはHashMapであり、値でソートする必要があります。 期待される出力は次のとおりです。
Item is:item3 with value:7
Item is:item1 with value:5
Item is:item2 with value:1
Item is:item4 with value:1
また
Item is:item2 with value:1
Item is:item4 with value:1
Item is:item1 with value:5
Item is:item3 with value:7