JavaSE之Map集合以及HashMap和LinkedHashMap

本文介绍了Java中的Map集合,强调了HashMap和LinkedHashMap的区别。HashMap基于哈希表,无序存储,而LinkedHashMap保持插入顺序。文中详细讲解了Map接口的关键方法如put、remove、get以及遍历Map的两种方式,并指出在存储自定义类型键值时需重写hashCode()和equals()方法。

一、Map<K,V>集合

Map集合被称为双列集合,每个元素包含键(Key)和值(Value),将键映射到值,一个映射不能包含重复的键,每个键最多只能映射到一个值,即Key和Value是一一对应的

Map集合下的常用子类包括HashMap和LinkedHashMap,HashMap的底层是哈希表,即数组+链表/红黑树,并且是一个无序的集合,存储元素和取出元素的顺序可能不一致,LinkedHashMap的底层是哈希表+链表,是一个具有可预知迭代顺序的集合

Map接口中的常用方法

1.put方法:存储键值时,若K值不重复,则返回值为null,若K值重复,则会使用新的V值代替原来的V值,并返回被替换的V值

2.remove方法:将K值对应的键值对元素移除,并返回该键值对的V值,若K值不存在,则返回null

3.get方法:根据指定的键,返回对应的值,若key不存在,则返回null

4.使用keySet方法遍历Map集合:

KeySet方法会把Map集合中所有的K值取出来存放到一个Set集合中,遍历该Set集合,即可得到Map集合中的每一个key值,最后通过Map集合中的get方法获取对应的value值

代码如下:

Map<String,Integer> map=new HashMap<>();

Set<String> set=map.keySet();

Iterator<String> it=set.iterator();      //使用迭代器遍历

while(it.hasNext()){

        String key=it.next();

        Integer value=Map.get(key);

        System.out.println(key+"="+value);

}

(另一种方法,使用增强for循环遍历:

for(String key:set){

        Integer value=Map.get(key);

        System.out.println(key+"="+value);

}

5.使用entrySet方法遍历Map集合:

Entry<K,V>是Map接口内部的一个接口,当Map集合创建时,就会在Map集合内部创建一个Entry对象,用来记录键与值。即键值对对象(键与值的映射关系)

entrySet方法会把Map接口内部的多个Entry对象取出来存储到一个Set集合中,通过遍历该Set集合可以获取每一个Entry对象,然后使用Entry中的两个方法getKey()和getValue()分别获取键与值

代码如下:

Map<String,Integer> map=new HashMap<>();

Set<Map.Entry<String,Integer>> set=map.entrySet();

Iterator<Map.Entry<String,Integer>> it=set.iterator();      //使用迭代器遍历

while(it.hasNext()){

        Map.Entry<String,Integer> entry=it.next();

        String key=entry.getKey();

        Integer value=entry.getValue();

        System.out.println(key+"="+value);

}

(另一种方法,使用增强for循环遍历:

for(Map.Entry<String,Integer> entry:set){

        String key=entry.getKey();

        Integer value=entry.getValue();

        System.out.println(key+"="+value);

}

二、HashMap存储自定义类型键值

Map集合保证key值不重复的前提是,作为key的元素必须重写hasCoed()方法和equals()方法

HashMap存储自定义类型键值时,就得保证自定义类型重写以上两个方法

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值