我有两个 HashMap ,看起来像这样,
public HashMap<Integer, String> scoreName = new HashMap<Integer, String>();
public HashMap<Integer, Integer> scoreValue = new HashMap<Integer, Integer>();
这里 HashMap 都有共同密钥。我想对scoreValue HashMap 和scoreName HashMap 进行排序,其中scoreName HashMap 也应该根据scoreValue进行排序。
示例:
scoreValue = 5,1,7,7,9 scoreName = a,b,c,d,e
我可以对scoreValue进行排序
List sortedKeys = new ArrayList(scoreValue.values());
Collections.sort(sortedKeys);
但这不是我要找的解决方案!
答案 0 :(得分:0)
HashMaps
是无序集合,因此您无法对它们进行排序。
这里更好的是拥有一个Score
对象,其中包含键,名称和值作为成员变量。
然后只需要一个简单的List<Score>
,然后在列表中调用Collections.sort()
。
如果您还需要快速ID查找,那么您可以将HashMap
的ID设为Score
。在需要时按顺序迭代列表。在地图中查找它们以查找给定ID的分数和名称。
如果每个Score
对象想知道它在列表中的排名,那么你可以在排序后循环遍历排序的集合,并在Score
对象中有一个变量来存储它。 / p>
TreeMap / TreeSet在这种情况下也可能有用,但它们不允许随机访问(即位于第3位的人)和TreeMap根据地图中的键进行排序,而不是值。
答案 1 :(得分:0)
HashMap没有任何排序。您可以使用LinkedHashMap,也可以使用树(或类似于树的数据结构)。使用LinkedHashMap与使用HashMap非常相似。