Map相关

本文深入解析Java中的Map集合,包括其基本概念、常用实现类如HashMap、TreeMap等的特点及应用场景,以及如何遍历Map集合的方法。同时介绍了Map的一些关键方法如put、remove等的使用细节。

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

Map:一次添加一对元素。存储的是键值对,且Map集合中必须保证键的唯一性。(Collection一次添加一个元素。)

Map称为双列集合,Collection称为单列集合。

Map常用的子类有:

  1. HashTable:内部是哈希表,是线程安全的,不允许null作为键和值。Properties是一种哈希表,用来存储键值对型的配置文件的信息。
  2. HashMap:内部是哈希表,是线程不安全的,允许null作为键和值。
  3. TreeMap:内部是二叉树结构,是线程不安全的,可以对Map集合中的键进行排序。

遍历Map集合中的键值对的两种方法:

  • 通过keySet()方法获取map中所有键所在的Set集合,再通过Set的迭代器获取到每一个键,再对每一个键通过Map集合的get方法获取其对应的值即可。(因为Map集合中键是唯一的,可以用Set集合进行存储,而Map集合中的值是不唯一的,因此需要用Collection存储。)
public static void method(Map<Integer, String> map){
    map.put(2, "xiangqiang");
    map.put(4, "wangcai");
    map.put(7, "zhaoliu");
    map.put(6, "wangwu");
    Set<Integer> keySet = map.keySet();
    Iterator<Integer> it = keySet.iterator();
    while(it.hasNext()){
        int key = it.next();
        String value = map.get(key);
        System.out.println(key + ":" + value);
    }
}

  • 使用entrySet进行遍历,是通过Map转换为Set。该方法是将键和值的映射关系作为对象存在Set集合中,而这个映射关系的类型就是Map.Entry类型。Map.Entry是嵌套类,接口中的静态接口,可以直接调用。
public static void method_2(Map<Integer, String> map){
    map.put(2, "xiangqiang");
    map.put(4, "wangcai");
    map.put(7, "zhaoliu");
    map.put(6, "wangwu");
		
    Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
    Iterator<Map.Entry<Integer, String>> it = entrySet.iterator();
    while(it.hasNext()){
        Map.Entry<Integer, String> me = it.next();
        //通过Map.Entry<>对象的getKey和getValue方法分别获取键和值。
        int key = me.getKey();
        String value = me.getValue();
        System.out.println(key + ":::" + value);
    }
}

Map中一些方法

public static void method(Map<Integer, String> map){
    //添加元素。添加元素会有返回值,当当前键在Map集合中未出现过时,则返回null,当当前建在Map中已经存在了,则此方法会返回之前对应的值,并更新键值对。
    System.out.println(map.put(8, "wangcai"));//null
    System.out.println(map.put(8, "xiaoqiang"));//wangcai
    map.put(2, "zhangsan");
    map.put(7, "zhaoliu");
    //删除。
    System.out.println("remove:" + map.remove(2));//删除键对应的键值对,并返回键对应的值,刪除操作会修改Map的长度。
		
    //判断。
    System.out.println("containsKey:" + map.containsKey(7));
    System.out.println("containsValue:" + map.containsValue("zhangsan"));
		
    //查询。
    System.out.println("get:" + map.get(7));
    System.out.println("size:" + map.size());
    System.out.println(map);//HashMap中的元素无序。
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值