Java基础——Map集合

一、引言

Map是Java中非常重要的数据结构之一,它提供了键值对的存储方式,能够高效地进行数据的查找和操作。在实际的软件开发中,Map集合被广泛应用于各种场景,例如存储配置信息、缓存数据、表示映射关系等。深入理解和掌握Map集合的特性和用法,对于编写高效、优秀的Java程序至关重要。

二、存储特点

  • 以键值对的形式存储数据
  • 键(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):向集合中添加一个键值对
    • 如果键已经存在,则进行值的覆盖
  2. int size(): 获取集合长度
  3. boolean containsKey(K): 判断集合是否包含指定键
  4. boolean containsValue(V): 判断集合是否包含指定值
  5. 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之外, 如果键为自定义类型,则必须重写hashCode和equals方法才能实现去重
  2. HashMap可以存放null值,键只能有一个null,值可以存在多个null
  3. LinkedHashMap在HashMap的基础上可以保证元素存入和取出的顺序一致
  4. TreeMap可以根据键进行默认的升序排序
    • 如果键为自定义类型,则需要自定义排序规则,方式与TreeSet一致
    • 键不可为null,否则排序会导致空指针
    • 仍然在compareTo或者compare方法返回值为0时去重
  5. Hashtable无法存放null值
  6. Properties只能存放String类型的数据
    • 不推荐使用多态
    • 无法使用泛型
    • setProperty(String,String): 向集合中添加一个键值对
    • String getProperty(String): 根据键获取值
    • load(输入流): 通过输入流将配置文件的内容读取到集合中

八、结语

Map集合作为Java编程中的重要组成部分,对于我们处理各种复杂的数据结构具有重要意义。在实际的项目开发中,合理高效地运用Map集合,将极大地提升我们程序的性能和可维护性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值