Map集合

本文介绍了Java中的Map集合,它用于存储键值对数据,不同于单一元素的Collection集合。HashMap是其常见实现之一,基于哈希表提供键的唯一性。LinkedHashMap则结合链表和哈希表,保证有序性。而TreeMap利用红黑树结构,支持自定义排序。Map集合提供了put、remove、get等方法进行操作,并有两种遍历方式:通过keySet或entrySet。示例代码展示了如何遍历和操作Map集合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • java.util.Map<K,V>集合,里面保存的数据是成对存在的,称之为双列集合。存储的数据,我们称为键值对。之前所认识的Collection集合中元素是单个存在的,称为单列集合
    • Map<K,V> K: 键的数据类型, V:值的数据类型
    • 键不能重复, 值可以重复
    • 键和值是一一对应的, 通过键可以找到对应的值
    • (键+值)一起是一个整体我们称之为”键值对”或者“键值对对象”, 在Java中叫做"Entry对象”。

  • Map集合的常用实现类
    • HashMap
      • 此前的HashSet底层实现就是HashMap完成的, HashSet保存的元素其实就是HashMap集合中保存的键
      • 底层结构是哈希表结构,具有键唯一, 无序的特点。
      • 键唯一: 自定义类要重写hashCode()方法和equals()方法
    • LinkedHashMap
      • 底层结构是链表和哈希表结构
      • 链表: 保证有序
      • 哈希表: 保证键唯一
    • TreeMap
      • 底层是红黑树, 键唯一, 可以通过键来自定义排序
      • 排序方式同TreeSet, 都支持自然排序比较器排序
        在这里插入图片描述

  • Map集合中的常用方法
public V put(K key, V value) // 把指定的键与指定的值添加到Map集合中。
public V remove(Object key) // 把指定的键所对应的键值对元素在Map集合中删除,返回被删除元素的值。
public V get(Object key) // 根据指定的键,在Map集合中获取对应的值。
public Set<K> keySet() // 获取Map集合中所有的键,存储到Set集合中。
public boolean containsKey(Object key) // 判断该集合中是否有此键。

  • Map集合的遍历方式
    • 键找值方式
      • 先通过keySet()获取所有的键
      • 遍历所有的键,通过键找到值
    • 通过键值对对象进行遍历
      • 调用map集合的entrySet()方法获取所有的键值对对象
      • 遍历每一个键值对对象 (Entry对象)
      • getKey()获取键,getValue()获取值
public class Test {
    public static void main(String[] args) {
        HashMap<Integer, String> hm = new HashMap<>();
        hm.put(1, "张三");
        hm.put(2, "李四");
        hm.put(3, "王五");

        // 打印集合大小
        System.out.println(hm.size());

        // 使用“键找值”的方式遍历集合,打印键和值;(keySet)
        Set<Integer> set = hm.keySet();
        for (Integer key : set) {
            System.out.println(key + " : " + hm.get(key));
        }

        System.out.println("==================================");
        // 使用“键值对”的方式遍历集合,打印键和值;(entrySet)
        Set<Map.Entry<Integer, String>> entries = hm.entrySet();
        for (Map.Entry<Integer, String> entry : entries) {
            Integer key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key + " : " + value);
        }

        // 获取键为1的值,并打印(get)
        System.out.println(hm.get(1));

        // 获取键为10的值,并打印
        System.out.println(hm.get(10));

        // 判断集合中是否有键:10(containsKey)
        System.out.println(hm.containsKey(10));

        // 删除键为1的键值对,删除完毕打印集合
        hm.remove(1);
        System.out.println(hm);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值