Chp14-Map集合

集合

存储特点

  • 以键值对的形式存储数据
  • 键(key):无序,无下标,元素不可重复
  • 值(value):无序,无下标,元素可以重复

常用实现类

  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 实现类名<>()

常用方法

K:键
V:值

  1. V put(K,V):向集合中添加一个键值对
  • 如果键已经存在,则进行值的覆盖
  1. int size():获取集合长度
  2. boolean containsKey(K):判断集合是否包含指定键
  3. boolean containsValue(V):判断集合是否包含指定值
  4. V get(K):根据键获取值

遍历

  1. 键遍历
  • Set<k的泛型> keySet():获取集合所有的键放入Set集合返回
//先获取所有的键
        Set<String> set1 = map.keySet();
        //遍历键
        set1.forEach(k -> System.out.println(k + "  " + map.get(k)));
  1. 值遍历
  • Collection<V的泛型> values():获取集合所有的值放入Collection集合返回
//获取所有的值
        Collection<String> coll = map.values();
        //遍历值
        for (String s : coll) {
            System.out.println(s);
        }

  1. 键值对遍历
  • Set <Map.Entry<K的泛型,v的泛型>> entrySet():将所有的键值对对象放入Set集合返回
  • entry对象.getKey():获取entry对象中的键
  • entry对象.getValue():获取entry对象中的值
//获取到所有的entry对象
        Set<Map.Entry<String, String>> set2 = map.entrySet();
        //遍历entry对象
        set2.forEach(entry-> System.out.println(entry.getKey()+","+entry.getValue()));
  1. 自遍历forEach
  • 集合名.forEach(BiConsumer 接口实现类对象)
System.out.println("自遍历-->匿名内部类:");
		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. 除去TreeMap之外,如果键为自定义类型,则必须重写hashCide和equals方法才能实现去重
  2. HashMao可以存放null值,键只能有一个null,值可以存在多个null
  3. LinkedHashMap在Hashmao的基础上可以保证元素存入和取出的顺序一致
  4. TreeMap可以韩剧键进行默认的升序排序
  • 如果键为自定义类型,则需要自定义排序规则,方式与TreeSet一致
  • 键不可为null,否则排序会导致空指针
  • 仍然在compareTo或者compare方法返回值为0时去重
  1. Hash table无法存放null值
  2. Propertoes只能存放String类型的数据
  • 不建议使用多态
  • 无法使用泛型
  • setProperty(String,String):向集合中添加一个键值对
  • String getProperty(String):根据键获取值
  • liad(输入流):通过输入流将配置文件的内容读取到集合中

今日掌握

  1. Map的存储特点
  2. Map的常用实现类和特点
  3. Map的创建语法
  4. Mao的遍历方式
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值