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

回到顶部