HashMap对key或value进行排序--Java--小白必懂2


  • HashMap对key进行排序
public static void main (String[]args){
            HashMap map = new HashMap<>();
            map.put("abd", 25);
            map.put("abe", 85);
            map.put("abf", 85);
            //-----------对key进行排序
            // 1---将hashmap的key转成数组,使用Arrays.sort()方法进行排序
            Set set = map.keySet();
            Object[] str = set.toArray();
            Arrays.sort(str);
            for (int i = 0; i < str.length; i++) {
                System.out.println(str[i] + "-----" + map.get(str[i]));
            }
            // 1.1---使用Collections.sort()方法进行排序。该方法可以对list进行排序
            Collection keys = map.keySet();
            List list = new ArrayList<>(keys);
            Collections.sort(list);
            for (int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i) + "-----" + map.get(list.get(i)));
            }
        }
  • HashMap对value进行排序
//-----------对value进行排序共两步:1、转成list,第二使用List.sort(comparator)或Collections.sort(list,comparator)排序
    // 虽然该方法能对key排序但是没法遍历key的值,所以一般是对value排序使用
    public static List sortValueMap(HashMap map){
        // 1、转成list
        List>lst=new ArrayList<>(map.entrySet());
        // 2.1、排序Collections.sort(list,comparator)
        Collections.sort(lst, new Comparator>() {
            @Override
            public int compare(Map.Entry o1, Map.Entry o2) {
//                return o2.getValue().compareTo(o1.getValue());
//                return o2.getValue().compareTo(o1.getValue());// 对value排序
                return o1.getKey().compareTo(o2.getKey()); // 对key排序
            }
        });
            /* A.compareTo(B), 返回值是A-B, int值,共三种取值,正,负,零
            负整数:当前对象的值(A) < 被比较对象的值(B) , 位置排在前
            零:当前对象的值 = 比较对象的值 , 位置不变
            正整数:当前对象的值(A) > 被比较对象的值(B) , 位置排在后
            //2.2 List.sort(comparator)
             lst.sort(new Comparator>() {
            @Override
            public int compare(Map.Entry o1, Map.Entry o2) {
                return o2.getValue().compareTo(o1.getValue());
            }
        });
             */
        return lst;
    }

相关