一)Set接口:
无序,不可重复(元素类型的equals方法比较)
无序:与放入顺序不一致。
比喻:List好比一个有格子顺序的盒子
Set好比一个袋子。
实现类:
HashSet:底层是基于散列算法(哈希算法)来存储的数据结构
treeSet:底层是基于有序的二叉树的数据结构
二)重写HashCode()和equals方法后的成立关系。
hash值相同,equals不一定为true
hash值不同,equals一定false.
equals为true,hash值一定相同
value的索引。作为key的对象类型必须重写hashCode方法。
因为key也是唯一的,不能重复的。Map的key底层就是
hashSet集合。
Map接口提供的常用方法:
put(K k,V v):作用是向Map对象中添加元素
get(K k):作用是通过k获取对应的value值。
当Map中没有相应的k,那么返回的value就是null
特点:key值可以为null.
Map接口最常用的实现类: HashMap
原来的key-value.
Map<String,String> map =
new HashMap<String,String>();
map.put("A","abc");
map.put("B","bcd");
无序,不可重复(元素类型的equals方法比较)
无序:与放入顺序不一致。
比喻:List好比一个有格子顺序的盒子
Set好比一个袋子。
实现类:
HashSet:底层是基于散列算法(哈希算法)来存储的数据结构
treeSet:底层是基于有序的二叉树的数据结构
二)重写HashCode()和equals方法后的成立关系。
hash值相同,equals不一定为true
hash值不同,equals一定false.
equals为true,hash值一定相同
equals为false,hash值有可能一样
三)Map接口:存储数据是以key-value形式存储的。key相当于value的索引。作为key的对象类型必须重写hashCode方法。
因为key也是唯一的,不能重复的。Map的key底层就是
hashSet集合。
Map接口提供的常用方法:
put(K k,V v):作用是向Map对象中添加元素
get(K k):作用是通过k获取对应的value值。
当Map中没有相应的k,那么返回的value就是null
特点:key值可以为null.
Map接口最常用的实现类: HashMap
四)为什么要重写HashCode()和equals()方法:
因为Set集合要存储不能重复的元素,我们提供了Hash
算法为每一个对象分配一个hash值,先根据hash值来判断
集合中是否存有此hash值,如果存在,那么就应该通过
equals算法来判断是否相同,不相同,就会存储在
对应的链表中,增加了检索困难,所以,我们要让hash值
相同的对象,内容也应该一样。
五)HashMap在存储数据时,如果再次存入相同的key时,会替换原来的key-value.
Map<String,String> map =
new HashMap<String,String>();
map.put("A","abc");
map.put("B","bcd");
map.put("A","fff");//会将原来的key-value替换掉