HashMap的储存是没有顺序的,而是按照key的HashCode实现.
// key=商品名称,value=价格,这里以这个例子实现按名称排序和按价格排序.
Map store = new HashMap();
store.put("iphone12", 6799);
store.put("iphone12pro", 8499);
store.put("macbookPro", 19499);
store.put("ipadAir", 6999);
store.put("watch6", 3199);
// 直接输出HashMap得到的是一个无序Map(不是Arraylist那种顺序型储存)
System.out.println(store);
{ipadAir=6999, iphone12pro=8499, macbookPro=19499, watch6=3199, iphone12=6799}
将entrySet转换为List,然后重写比较器比较即可.这里可以使用List.sort(comparator),也可以使用Collections.sort(list,comparator)
// 转换为list
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(store.entrySet());
// 使用list.sort()排序,按key排序
list.sort(new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1,