Map集合之HashMap及其常用方法

本文深入解析了Map和HashMap的数据结构特点,包括键值对映射、哈希表结构、键的唯一性和值的重复性。详细介绍了HashMap的常用操作方法,如添加、获取、删除元素,遍历键值对等,以及如何利用keySet()和values()方法处理键值序列。

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

Map有什么特点?
1、增加元素使用的是put();
2、采用了 Key-value键值对映射的方式进行存储;
3、key在Map里面是唯一的但是valsue可以重复,一个key对应一个value;

HashMap ( Map的实现类 ) 的特点:
1、键是哈希表结构,可以保证键的唯一性,
2、当向已存在key的Map中添加元素时,会覆盖掉旧值,并将旧值返回。
3、它允许使用 null 值和 null 键,但不保证映射的顺序,特别是它不保证该顺序恒久不变(即不会保证存储的顺序与输出的顺序恒久不变)。

Map中元素,可以将key序列、value序列单独抽取出来。
1、使用keySet()抽取key序列,将map中的所有keys生成一个Set。
2、使用values()抽取value序列,将map中的所有values生成一个Collection。

为什么keySet()生成Set,values()生成Collection?
答:因为key总是独一无二的(Set具有唯一性),value允许重复;

HashMap常用方法实例:

package cn.zyq.Aug01;

/**
 * Map相关练习
 */
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
public class Test {
	public static void main(String[] args) {
		Map<Integer, String> map = new HashMap<Integer, String>();
		/**
		 ** 添加元素
		 */
		map.put(101, "MM");
		map.put(102, "OO");
		map.put(103, "PP");
		map.put(104, "QQ");
		map.put(103, "nn");
		
		/**
		 ** 获取map长度
		 */
		//因为key值唯一,所以会将相同的覆盖
		System.out.println("map长度为:"+map.size());
		
		/**
		 ** 遍历map元素,获取所有的键
		 */
		for(Integer key:map.keySet()) {
			System.out.println(key+":"+map.get(key));
		}
		
		/**
		 ** 拿出key值,返回一个set型的集合
		 */
		Set<Integer> set = map.keySet();
		System.out.println("拿出key,返回set型集合");
		System.out.println(set);
		
		//通过keySet()的返回值输出value的值
		System.out.println("通过keySet()输出value:");
		for(Integer key:set) {
			System.out.println(map.get(key));
		}
		
		/**
		 ** 拿出value值,返回Collection型集合
		 */
		Collection<String> col = map.values();
		System.out.println("拿出value,返回Collection型集合");
		System.out.println(col);
		
		/**
		 **删除key为103的键值
		 */
		map.remove(103);
		System.out.println("删除后元素的键值对个数为:"+map.size());
		
		/**
		 ** 判断是否存在为key值的键
		 */
		System.out.println("判断是否存在key=101的键:"+map.containsKey(101));
		
		/**
		 ** 判断是否存在为value值的键
		 */
		System.out.println("判断是否存在value=MM的键:"+map.containsValue("MM"));
		
		/**
		 ** 判断map是否为空
		 */
		System.out.println("判断map是否为空:"+map.isEmpty());
		
		/**
		 ** get(),通过key的值得到value的值
		 */
		int getkey=101;
		String s = map.get(getkey);
		System.out.println(getkey+"对应的值为:"+s);
		
		/**
		 ** 通过map中entrySet()方法,输出键值对
		 */
		Set<Entry<Integer, String>> se = map.entrySet();
		for(Entry<Integer, String> key:se) {
			System.out.println(key);
			//两种方式均可
			//System.out.println(key.getKey()+":"+key.getValue());
		}
	}
}

执行结果供参考:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值