对于java Map集合的理解和多种遍历方式

本文详细介绍了Map集合的概念及其在Java中的应用。重点讲述了HashMap与TreeMap的不同之处,包括它们的性能特点及适用场景,并探讨了Hashtable与HashMap之间的区别。此外,还介绍了如何遍历Map集合的几种常见方式。

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

Map集合

  • Map提供了一种映射关系,其中的元素是以键值对(key - value)的形式存储的,能够实现根据key快熟查找value
  • 键(key)不可以重复,值(value)值可以重复
  • 每个键最多只能映射到一个值(也就是一个键,只能对应一个值
  • 当存放相同的键:当前的键会将原来的键覆盖

其实现类结构如下:

注:

HashMap通常比TreeMap快一点(树和哈希表的数据结构使然),建议多使用HashMap,在需要排序的Map时候才用TreeMap

HashMap与Hashtable的区别:

    • Hashtable中的“key”和“value”都不允许null,而HashMap允许。
    • Hashtable是线程安全的,适合在多用户环境中使用,效率稍低;HashMap不是线程安全的,效率稍高,适合在单线程环境下使用。

集合视图

 keySet()、values() 和 entrySet()

      entrySet()   

           返回 Map 中所包含映射的 Set 视图。 Set 中的每个元素都是一个 Map.Entry 对象,可以使用 getKey() 和 getValue() 方法(还有一个 setValue() 方法)访问后者的键元素和值元素 

      keySet()     

           返回 Map 中所包含键的 Set 视图。 删除Set 中的元素还将删除 Map 中相应的映射(键和值) 

      values()  

           返回 map 中所包含值的 Collection 视图。删除 Collection 中的元素还将删除 Map 中相应的映射(键和值)

可以查看API中的提供的方法(文章底部附jdk1.8API)。

遍历Map
Map<Integer, String> hm = new HashMap<Integer, String>();// 添加了泛形
		hm.put(1, "first");// 添加元素
		hm.put(2, "two");
		hm.put(3, "three");
		hm.put(4, "four");
		// 遍历集合
		System.out.println("第一种方式---------------");

		for (Map.Entry<Integer, String> map : hm.entrySet()) { // entrySet返回一个Set视图
			System.out.println(map.getKey() + "--------" + map.getValue());
			// getKey()获得键 getValue()获得值
		}

		System.out.println("第二种方式---------------");

		Set<Integer> ss = hm.keySet(); // 转为set视图
		Iterator<Integer> it = ss.iterator(); // 获得一个迭代器
		while (it.hasNext()) { // 判断是否有下一个元素
			Integer key = it.next(); // 获得下一个键
			String values = hm.get(key); // 通过键获得值
			System.out.println(key + "---------------" + values);
		}

		System.out.println("第三种方式---------------");

		Set<Integer> si = hm.keySet(); // 返回一个set视图
		for (Integer key : si) {
			String values = hm.get(key); // 通过键获得值
			System.out.println(key + "---------------" + values);
		}

遍历Map集合有多种方式,选择一种自己觉得便于理解的方式即可!

jdk1.8下载:https://download.youkuaiyun.com/download/fly_tom/10298560

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值