关于《Map的遍历》的补充

【问题描述】本题的目的是让大家掌握Map遍历的几种方法。
第一种:二次取值,通过Map.keySet遍历key和value
第二种:通过Map.entrySet使用iterator遍历key和value
第三种:通过Map.values()遍历所有的value,但不能遍历key

这道题当时Java老师修改了好多次,我们来看一下一开始的题目要求。一开始的时候Java老师要求需要对Map进行降序排序。如果排序的话,就需要使用Comparator类的compareTo方法。而有这个方法的Map子类就是TreeMap。
当时好多同学说我写错了,其实那并不是写错了,是Lambda表达式的一种写法。大家可以参考下面的文章。
Lambda表达式(1)
Lambda表达式(2)
我们来看一下具体的操作代码

import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;

public class Test_sort{
    public static void main(String[] args) {
    	//注意:这个Map的定义是从这里开始,到14行结束
    	//这里使用了public TreeMap(Comparator<? super K> comparator)构造器
        Map<String,String>map = new TreeMap<>(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o2.compareTo(o1);
            }
        });

        map.put("1","Language");
        map.put("2","C Language");
        map.put("3","Java Language");

        System.out.println(map);
    }
}

当然如果使用Lambda表达式是更加简洁的,我们可以对map的定义进行如下修改。

	//这两种定义的方式都是相同的
	Map<String,String>map = new TreeMap<>((o1, o2) -> o2.compareTo(o1));



不难看出上面的操作是对map的键进行排序的,我们也可以对map的值进行排序。但是就需要用到Collections.sort()方法了。
可以参考如下文章:
让你永远不再因Collections.sort()而迷惑(1)
让你永远不再因Collections.sort()而迷惑(2)

发布了18 篇原创文章 · 获赞 8 · 访问量 1504

猜你喜欢

转载自blog.csdn.net/weixin_46192593/article/details/104986263