Map集合map.entrySet()玩法

public Set<Map.Entry<K,V>> entrySet()

获取Map集合中所有的“键值对”对象的集合(Set集合)。

  • 就是返回一个集合,集合里存放的是对象,创建对象的类有两个属性,分别是 键和值 也即键值对。
  • 其中Entry是属于Map的静态内部类,在创建Map对象的时候就会同时创建一个Entry对象,用来记录键与值的映射关系。

例题:

public class Test {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("一二", 20);
        map.put("一", 18);
        map.put("一二三四", 24);
        map.put("一二三", 22);

        // 获取到Map集合中所有的“键值对”对象的集合,存放到set集合中
        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        System.out.println(entries);// 结果:[一=18, 一二三=22, 一二=20, 一二三四=24]

        // 获取map集合的key,存放到set集合中,无序
        Set<String> setKey = map.keySet();
        System.out.println(setKey);// 结果:[一, 一二三, 一二, 一二三四]
        // 采用Tree对上面Set进行排序
        TreeSet<String> treeSet = new TreeSet<>(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.length() - o2.length();
            }
        });
        treeSet.addAll(setKey);
        System.out.println(Arrays.toString(treeSet.toArray()));// 结果:[一, 一二, 一二三, 一二三四]

        // 获取map集合的key,存放到Collection集合中,无序
        Collection<Integer> values = map.values();
        Object[] o = values.toArray();
        System.out.println(values);// 结果:[18, 22, 20, 24]
        // 对上面的数组进行排序
        Arrays.sort(o);
        System.out.println(Arrays.toString(o));// 结果:[18, 20, 22, 24]

        // ----------以上是仅对key或value排序,以下对map排序----------

        List<Map.Entry<String, Integer>> entryList = new ArrayList<>(map.entrySet());
        Collections.sort(entryList, new Comparator<Map.Entry<String, Integer>>() {
            @Override
            public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
//                return o1.getValue() - o2.getValue();
                return o1.getKey().length() - o2.getKey().length();
            }
        });
//        System.out.println(entryList);// map集合根据value值大小排序,正序,结果:[一=18, 一二=20, 一二三=22, 一二三四=24]
        System.out.println(entryList);// map集合根据key值字符串长度排序,正序,结果:[一=18, 一二=20, 一二三=22, 一二三四=24]
    }
}

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值