Java HashMap sorting
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Java Ordered Map
我在
1 2 3 4 5 |
当用户单击ProductName,productCode或Price时,该对象应根据我的要求进行排序。
1 2 3 | I added like this. productMap .put(1,product1); productMap .put(2,product2); |
我该怎么做。我想使用object.not键进行排序
请帮我。
提前致谢
如果您不想经常根据键访问值,则不应使用HashMap。
只需使用值列表并实现不同的
HashMaps没有排序,如果需要排序映射,可以使用TreeMap。 或者,您可以获取keySet,对其进行排序,迭代并从HashMap中提取信息,但这是不必要的恕我直言。
HashMap map = new HashMap();
hash map以key,value pair的形式存储值。它没有同步(意味着它可以作用于多个线程).annemap的初始容量是16.并且加载因子是0.75。
初始容量* loadfactor = 16 * 0.75 = 12
这意味着在存储第12个关键值对之后,哈希映射大小加倍。
当您使用其键和值对时,这些值将以无序方式使用。
你也可以试试(排序)------->
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | public LinkedHashMap sortHashMapByValuesD(HashMap passedMap) { List mapKeys = new ArrayList(passedMap.keySet()); List mapValues = new ArrayList(passedMap.values()); Collections.sort(mapValues); Collections.sort(mapKeys); LinkedHashMap sortedMap = new LinkedHashMap(); Iterator valueIt = mapValues.iterator(); while (valueIt.hasNext()) { Object val = valueIt.next(); Iterator keyIt = mapKeys.iterator(); while (keyIt.hasNext()) { Object key = keyIt.next(); String comp1 = passedMap.get(key).toString(); String comp2 = val.toString(); if (comp1.equals(comp2)){ passedMap.remove(key); mapKeys.remove(key); sortedMap.put((String)key, (Double)val); break; } } } return sortedMap; |
}