java集合------Map

本文详细介绍了Java中的Map接口及其主要实现类:HashMap、ConcurrentHashMap、HashTable、TreeMap和LinkedHashMap。HashMap是快速但非线程安全的,Java 8开始使用红黑树优化长链表。ConcurrentHashMap通过分段锁实现线程安全,提高并发性能。TreeMap提供排序功能,LinkedHashMap则保持插入或访问顺序。
摘要由CSDN通过智能技术生成

一.概述

Map是一个包含键值对的集合,一个map不能有重复的键(key),而且每个键至多只能对应一个值.Map同Collection一样,它的所有通用实现都会提供一个转换器构造函数,接收一个Map类型集合,并以此初始化自己,这样只要是Map的实现都可以相互之间转换.

  和List与Set一样,Map强化了equal和hashCode以能对两个Map对象实现逻辑上的比较.如果两个Map实例有相同的键值对,那么它们是相等的.

 

Map是一个包含键值对的集合,一个map不能有重复的键(key),而且每个键至多只能对应一个值.Map同Collection一样,它的所有通用实现都会提供一个转换器构造函数,接收一个Map类型集合,并以此初始化自己,这样只要是Map的实现都可以相互之间转换.

  和List与Set一样,Map强化了equal和hashCode以能对两个Map对象实现逻辑上的比较.如果两个Map实例有相同的键值对,那么它们是相等的.

  Map的集合视角方法使Map可以像Collection一样进行操作元素

  • KeySet--返回Map集合中键的Set集合
  • Values--返回Map集合中值的Collection集合
  • entrySet--返回Map集合中键值对对象的Set集合.在Map中提供了一个小的嵌套接口Map.Entry,它就是Map的键值对对象.

  Map没有实现Iterable接口,所以集合视角是Map集合遍历的唯一手段,并且每次获取Map集合视角的时候,返回的是相同的对象.集合视角支持removal类型操作,但是任何情况下都不支持addition,对集合视角的removal操作会影响到Map集合本身,比如map.keySet().clear()将会清空map,反之亦然,这和Set,List的视图一样.

使用集合视角有一些有意思的用法,比如

 public static void main(String[] args) {
        Map<String,Object> map=new HashMap<>();
        Map<String,Object> map2=new HashMap<>();
        map2.put("a", 1);
        map.put("a",1);
        map.put("b",2);
        map.put("c",3);
        System.out.println(map.keySet());
        System.out.println(map.values());
        System.out.println(map.entrySet());
        //判断一个Map是否是另一个Map的子集
        System.out.println(map.entrySet().containsAll(map2.entrySet()));
        //判断两个Map的是否拥有相同的键
        System.out.println(map.keySet().equals(map2.keySet()));
    }

等等。。。

三.子接口

  Map和Set接口从形式上有些类似,类比与SortedSet和NavigableSet,Map也有SortedMap和NavigableMap两个接口,实际上Set的实现底层就是使用的Map存储数据.

  SortedMap将元素的键以自然排序,或者依照给定的排序器来进行排序,同SortedSet,Sorte

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值