Map----映射

本文介绍了Java中的Map接口,重点关注HashMap实现。Map用于存储键值对,不允许键重复,值可多对一。通过put方法添加键值对,如`map.put("a", "zhangsan")`。当键相同,新值会覆盖旧值。通过get方法获取键对应的值,不存在则返回null。此外,可通过keySet和values方法遍历Map,或者使用效率更高的Map.Entry迭代。" 135308508,7823053,饮料瓶盖收集活动:赢取大奖算法挑战,"['算法', '数据结构', 'c++', 'python']

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

1、Map是一个interface,其有很多实现类,主要有HashMap

2、Map存放的是键值对:Map<K,V>。一个map不能包含重复的keys,每个key可以映射到多个value上。

3、put方法:map.put(key, value)

HashMap map = new HashMap();
map.put("a", "zhangsan");
map.put("b", "lisi");
map.put("c", "wangwu");
System.out.println(map.toString());

输出结果:{b=lisi, c=wangwu, a=zhangsan}

从结果可以看出,map在输出时是按照键值对的形式输出的,输出的顺序与存入的顺序无关。

如果在添加一条:map.put("a", "zhang");输出结果会是怎么样呢?能添加成功吗?

经过编译运行,得到的结果是{b=lisi, c=wangwu, a=zhang} 我们发现键值为“a“的value值由“zhangsan"--->"zhang".Map添加元素的机制和Set的添加机制是不一样的。如果我们向map中添加元素时,有两个元素的key是一样的,那么后添加的value值会把该key已存在的value值覆盖掉。

4、get方法:get(key):如果key存在,就返回key的value值;如果key不存在,则返回null

(1)存在String value = (String) map.get("b"); 输出:lisi

(2)不存在String value = (String) map.get("d"); 输出:null

5、如果我们不知道map中的键是什么类型的,想要获取其值?

Map本身给我们提供了两种方式:

(1)keySet:返回key的集合,因为Map的键key是不能重复的,所以返回值的类型是Set类型的

Set set = map.keySet();
for (Iterator iter = set.iterator(); iter.hasNext();) {
String key = (String) iter.next();
String value = (String) map.get(key);
System.out.println(key + "=" + value);
}

输出结果:

b=lisi
c=wangwu
a=zhangsan

(2)values:返回值是Collection类型,值可以重复,Collection允许放重复的元素

Collection collection = map.values();

6、Map.Entry类:Map取数据的第二种方式,效率较高,必会

Set set = map.entrySet();
//entry中封装了key和value
for (Iterator iter = set.iterator(); iter.hasNext();) {
Map.Entry entry = (Map.Entry) iter.next();
String key = (String) entry.getKey();
String value = (String) entry.getValue();
System.out.println(key + ":" + value);

}//一定要会

与keySet实际实现是一样的,二者使用的选择据个人而定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值