首页 > 编程知识 正文

map根据key排序,map根据value排序思路

时间:2023-05-04 09:07:00 阅读:270080 作者:2828

1.根据key键给map排序

public static void main(String[] args) { Map<Integer,String> map = new TreeMap<>(new Comparator<Integer>(){ @Override public int compare(Integero1, Integer o2) { return o1-o2;//按照key顺序排列,o2-o1是逆序 } }); map.put(3, "China"); map.put(8, "America"); map.put(2, "Canada"); map.put(1, "Franch"); map.put(5, "Banana");//map遍历 Set<Integer> set = map.keySet(); Iterator<Integer> iterator = set.iterator(); while(iterator.hasNext()){ Integer key2 = iterator.next(); System.out.println(key2+"-------"+map.get(key2)); } }

排序结果:

1-------Franch
2-------Canada
3-------China

5-------Banana
8-------America

注意:标红部分的对应关系,因为key是Integer,所以,比较器的泛型和参数 都是Integer.


2.根据value给map排序

public static void main(String[] args) { TreeMap<Integer, String> map = new TreeMap<>(); map.put(3, "China"); map.put(8, "America"); map.put(2, "Canada"); map.put(1, "Franch"); map.put(5, "Banana"); ArrayList<Entry<Integer, String>> list = new ArrayList<Map.Entry<Integer, String>>(map.entrySet()); Collections.sort(list, new Comparator<Map.Entry<Integer, String>>() { @Override public int compare(Entry<Integer, String> o1, Entry<Integer, String> o2) { return o1.getValue().compareTo(o2.getValue());//顺序 } }); for (Entry<Integer, String> entry : list) { System.out.println(entry.getKey()+"------"+entry.getValue()); } }

排序结果:

8------America
5------Banana
2------Canada
3------China
1------Franch

如果想要逆序,改变o1和o2的顺序即可,蓝色部分改为:

o2.getValue().compareTo(o1.getValue())

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。