Set(HashSet可以看作HashMap的Key:[key的hash值不能相等]):
HashSet:常常用来将list中的结果去重,但是再转成list时,顺序
保持set中的对象顺序,而不是插入顺序
Map map=new HashMap();
Map(接口,特点时键值对Entry<K,V>组成):
泛型:规定对象的类型
常见字符:TE K V ?
E - Element (在集合中使用,因为集合中存放的是元素)
T - Type(Java 类)
K - Key(键)
V - Value(值)
N - Number(数值类型)
? - 表示不确定的java类型
Map中同Key的,下面的value会覆盖掉上面的value
map.put是增加修改元素的方法(修改是覆盖)
map.get(key)//某一个key对应的value
map.remove(key)//移除
Map遍历:
Set set =map.entryset();//获取Entry集合
for(Object obj:set){
System.out.print(obj)}
常用:
Set keys=map.keySet();//获取所有key集合
for(Object obj:Keys){
System.out.print(obj);
System.out.print(map.get(obj));}
Collection values=map.values();
for(Object values:values){
System.out.print(value);//无法通过value找key
Map中的Key可以作为Set获取,通过keySet()
Map中的value可以作为Collection获取,通过values()
Map中的映射关系可以通过Set获取,通过entrySet()
HashMap底层Entry<K,V>,每一个Entry封装在Node节点中形成单向链表
阀值为8,代表超过8个元素,不再用单向链表,改用红黑树存储
如果元素个数降到6个元素以下,再重新转成单向链表
红黑树:(HasMap的hash值是红黑树存储):
一种查询二叉树,不论插入数值,或删除数值,会尽量保证树的平衡
由于二叉树可能存在不平衡的情况,因此会使用红黑树的旋转来解决问题
二叉树:
二分法查询非常适配的存储结构,会大大加快查询效率和节约存储空间
hadoop-->mapreduce-->mapper+reducer]