Java哈希映射排序
可能重复:Java哈希映射排序,java,sortedmap,Java,Sortedmap,可能重复: 我在HashMap中有产品对象列表,我想进行排序 ProductName ProductCode Qty Price Pen 100011 10 10.00 product1 Penci 100012 5 5.00 product2 HashMap<Integer,Product> productMap = new HashMap<I
我在
HashMap
中有产品对象列表,我想进行排序
ProductName ProductCode Qty Price
Pen 100011 10 10.00 product1
Penci 100012 5 5.00 product2
HashMap<Integer,Product> productMap = new HashMap<Integer,Product>();
如何执行此操作。我要使用object.not键进行排序
请帮帮我
提前感谢哈希映射未排序,如果需要排序映射,可以使用。或者,您可以获取键集、对其排序、迭代并从HashMap中提取信息,但这是不必要的。如果您不想频繁访问基于键的值,则不应该使用HashMap。 只需使用一个值列表并实现不同的
比较器
s。然后使用适当的比较器对列表进行排序。HashMap map=newhashmap()
哈希映射以键、值对的形式存储值。它未同步(意味着它可以作用于多个线程)。hasmap的初始容量为16.5,负载因子为0.75。
初始承载力*荷载系数=16*0.75=12
这意味着在存储第12个密钥值对后,哈希映射大小将加倍
当您使用它的键和值对时,这些值将以无序方式使用
您也可以尝试它(用于排序)--->
}哈希映射是无序的。人们可以先得到答案,然后再排序。。。不过,也许你会看到。
I added like this.
productMap .put(1,product1);
productMap .put(2,product2);
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;