Map集合

存储特点

  1. 键值对存放数据

  2. 键(key-k):无序、无下标、元素不可重复

  3. 值(value-v):无序、无下标、元素可以重复

常用实现类

  1. HashMap

    • JDK1.2 底层哈希表实现 线程不安全,效率高

  2. LinkedHashMap

    • JDK1.2 是HashMap的子类,底层哈希表实现 线程不安全,效率高

  3. TreeMap

    • JDK1.2 底层红黑树实现,是SortedMap的实现类 线程不安全,效率高

  4. Hashtable

    • JDK1.0 底层哈希表实现 线程安全,效率低

  5. Properties

    • JDK1.0 是Hashtable的子类,底层哈希表实现 线程安全,效率低

创建

  • 建议使用多态

Map<键的泛型,值的泛型> 集合名=new 实现类名<>();

常用方法

  1. V put(K,V):将键值对添加至集合

    • 如果键已经存在,则进行值的覆盖

  2. boolean containsKey(键):判断是否包含指定键

  3. boolean containsValue(值):判断是否包含指定值

  4. V get(K):根据键获取对应值,不存在返回null

  5. V remove(K):根据键移除整个键值对

  6. int size():获取集合长度

    • 一个键值对是一个元素,长度为1

遍历

  1. 键遍历

    • Set<键的泛型> keySet():获取所有的键放入Set集合返回

            //创建一个 说明-具体值的Map集合
            Map<String, String> map = new HashMap<>();
            map.put("tel", "13333333333");
            map.put("username", "zhangsan");
            map.put("password", "123456");
            map.put("password", "456789");
    ​
            //键遍历
            //先获取所有的键
            Set<String> set1 = map.keySet();
            //遍历所有的键
            set1.forEach(k-> System.out.println("键:"+k+"  值:"+map.get(k)));
            //外遍历
            for (String k : set1) {
                System.out.println("键:" + k + "  值:" + map.get(k));
            }
  2. 值遍历

    • Collection<值的泛型> values():获取所有的值放入Collection集合返回

            //获取所有的值
            Collection<String> coll = map.values();
            //自遍历
            coll.forEach(v-> System.out.println("值:"+v));
            //外遍历
            for (String v : coll) {
                System.out.println("值:"+v);
            }
  3. 键值对遍历

    • Set<键值对对象> entrySet():获取所有的键值对对象放入Set集合返回

    • Entry:Map接口的内部接口,表现形式为Map.Entry<K,V>

    • K getKey():获取键值对对象中的键

    • V getValue():获取键值对对象中的值

    //获取所有的键值对对象
            Set<Map.Entry<String, String>> set2 = map.entrySet();
            //遍历所有的键值对对象
            set2.forEach(entry-> System.out.println("键:"+entry.getKey()+"  值:"+entry.getValue()));
    ​
            //外遍历
            for (Map.Entry<String, String> entry : set2) {
                System.out.println("键:" + entry.getKey() + "  值:" + entry.getValue());
            }
  4. 自遍历

    • forEach(BiConsumer实现类对象)

    map.forEach(new BiConsumer<String, String>() {
                @Override
                public void accept(String k, String v) {
                    System.out.println("键:"+k+"   值:"+v);
                }
            });
            System.out.println("lambda简化:::::");
    ​
            map.forEach((k,v)-> System.out.println("键:"+k+"   值:"+v));

使用

  1. 如果键为自定义类型,必须重写HashCode和equals方法才能保证哈希表的去重

  2. HashMap可以存放null值,键可以有0-1个null,值可以有0-多个null

  3. LinkedHashMap在HashMap的基础上可以保证元素存入和取出的顺序一致

  4. TreeMap可以根据键对元素进行默认的升序排序

    • 如果键为自定义类型,则必须重写排序规则(两种方式与TreeSet一致)

    • 键不能为null,会导致空指针

  5. Hashtable不能存放null值

  6. Properties只能存放String类型

    • 不推荐使用多态

    • 不能添加泛型

    • setProperty(String K,String V):添加键值对,相当于put方法

    • V getProperty(String K):根据键获取值,相当于get方法

    • load(输入流对象):通过输入流将配置文件内容读取到集合中

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值