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] ?
|