Java集合自学----Map接口及HashMap的使用

HashMap是Java中Map接口的一个实现,它通过key的hash值进行数据存储,确保key的唯一性。value可以重复。HashMap非线程安全,遍历时可通过keySet、entrySet或直接获取所有value。遍历时使用Entry对象的getKey和getValue方法。HashMap的遍历不保证顺序,与HashSet类似。
摘要由CSDN通过智能技术生成

Map接口

HashMap
其内部与HashSet大致相同

	1.Map和Collection并列存在,用于保存具有映射关系的数据,key-value

	2.map的存放是按照key的hash值存放的

	3.key不允许重复,若新加入的key和集合中某元素key值相同就替换其中的元素。value可以重复。

	4.key为空只能有一个。

	5.常用String作为key,但是Object类都可以做key值

	6.在存放时会传入key和value值

(1)k-v在底层会创建一个entrySet集合,该元素类型是Entry,一个Entry对象包含了k,v。在set,collection是有指向node,为了遍历node中的k-v,把引用指向set和Collection
(2)k-v存放在node中,为了方便遍历,会创建EntrySet集合,该集合存放的元素类型Entry,对象为k,v EntrySet<Entry (k,v)>,Zai entrySet中定义的类型是一个map.entry,实际上还是一个hashmapnode,node是map.entry的实现类 两者都可以存放值的k-v,但是后者的setValue(value)不能为空。
在这里插入图片描述

(3)以当把node(静态内部类)存放在entrySet中后,会方便遍历。entrySet的父接口Entry中提供了getKey和getvalue方法,Entry 实现了Map.Entry,Entry是一个静态内部类。
(4)遍历时先向下转型,然后调用上述方法。
(5)在entry中创建一个数组输出为k-v形式,keySet和value是内部类,同样可以得到Key和Value,分别是Set和collection类型。只是指向不是存放

常用遍历方法

		1.取出所有的key,   map.keyset 得到所有的key  再使用get方法得到映射

		2.得到entry entry转为map.entry得到key和value   entry是一个内部类,Map.Entry是一个接口,其中有getKey和getValue的方法  Entry是Map.Entry的实现类
 for (Object o : set) {
           Map.Entry e =(Map.Entry) o;
            System.out.println(e.getValue());
        }
		3.取出所有的value   可以使用所有collection的方法

小结:

		1.Map接口如果添加相同的key,key不变value会被替换

		2.和HashSet一样所以不是有序的

		3.hashmap没有实现同步,所以线程不安全。			
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值