Java按值对HashMap排序
我需要HashMap
根据存储在其中的值对我进行排序。在HashMap
包含存储在手机联系人的名字。
另外,我还要求在对值进行排序时对键进行自动排序,否则你可以说键和值绑定在一起,因此值的任何更改都应反映在键中。
HashMap<Integer,String> map = new HashMap<Integer,String>();map.put(1,"froyo");
map.put(2,"abby");
map.put(3,"denver");
map.put(4,"frost");
map.put(5,"daisy");
要求的输出:
2,abby;5,daisy;
3,denver;
4,frost;
1,froyo;
回答:
假设使用Java,则可以像下面这样对hashmap进行排序:
public LinkedHashMap<Integer, String> sortHashMapByValues( HashMap<Integer, String> passedMap) {
List<Integer> mapKeys = new ArrayList<>(passedMap.keySet());
List<String> mapValues = new ArrayList<>(passedMap.values());
Collections.sort(mapValues);
Collections.sort(mapKeys);
LinkedHashMap<Integer, String> sortedMap =
new LinkedHashMap<>();
Iterator<String> valueIt = mapValues.iterator();
while (valueIt.hasNext()) {
String val = valueIt.next();
Iterator<Integer> keyIt = mapKeys.iterator();
while (keyIt.hasNext()) {
Integer key = keyIt.next();
String comp1 = passedMap.get(key);
String comp2 = val;
if (comp1.equals(comp2)) {
keyIt.remove();
sortedMap.put(key, val);
break;
}
}
}
return sortedMap;
}
只是一个开端的例子。这种方法在对HashMap进行排序并保留重复值的同时也更加有用。
以上是 Java按值对HashMap排序 的全部内容, 来源链接: utcz.com/qa/420857.html