Map
map = new LinkedHashMap<>();
map.put("1key", "1value");
map.put("2key", "2value");
map.put("3key", "3value");
Iterator it = map.entrySet().iterator();
System.out.println("依照加入顺序打印map");
while (it.hasNext()) {
Map.Entry entity = (Map.Entry) it.next();
System.out.println(entity);
依照加入顺序打印map
1key=1value
2key=2value
3key=3value
概括的说,
LinkedHashMap
是一个关联数组、哈希表,它是线程不安全的,允许key为null,value为null。 它继承自HashMap,实现了Map&lt;K,V&gt;接口。其内部还维护了一个双向链表,在每次插入数据,或者访问、修改数据时,会增加节点、或调整链表的节点顺序。以决定迭代时输出的顺序。
默认情况,遍历时的顺序是按照插入节点的顺序。这也是其与 HashMap 最...
在深入解析HashMap文章中我从散列表的角度解析了HashMap,在深入解析ConcurrentHashMap解析了ConcurrentHashMap的底层实现原理。本文是HashMap系列文章的第三篇,主要内容是讲解与HashMap相关的集合类。HashMap本身功能已经相对完善,但在某些特殊的情景下,他就显得无能为力,如高并发、需要记住key插入顺序、给key排序等。实现这些功能往往需要付出一定的代价,在没有必然的需求情景下,增添这些功能是没必要的。
LinkedHashMap
存取数据,还是跟HashMap一样使用的Entry[]的方式,双向链表只是为了保证顺序。accessOrder涉及到
LinkedHashMap
存储的顺序,具体的存储顺序分为两种:插入顺序(false)和。HashMap是无序的,当我们希望有顺序地去存储key-value时,就需要使用
LinkedHashMap
了。这也是默认值,表示
LinkedHashMap
中存储的顺序是按照调用put方法插入的顺序进行排序的。如果不进行访问操作,则为插入顺序一致。存储的数据是有序的【添加顺序】
有时,我们想获得Map中所有Key值集合。有时,我们又需要提
取出
Map中所有value的值。
很简单,就用两个Map自带的方法即可轻松实现:Set Map.keySet():获得Map中所有Key的集合;
Collection Map.values() : 获得Map中所有value的集合;
(一)HashMap
取值
--->不是按照插入顺序HashMap<String,Integer> hm=new HashMap<String, Integer>();
hm.put("大学语文",3);
hm.put("英语",1);
hm.put("音乐鉴赏",5);
hm.put("数学",2);
hm.put("形式政策",4);
@Test
public void test_
LinkedHashMap
_findFirstKey(){
LinkedHashMap
<String,String>
linkedHashMap
= new
LinkedHashMap
<>();
linkedHashMap
.put("1","1");
linkedHashMap
.put("2","2”);
// 关键代码
以下为本人亲测,当你使用
LinkedHashMap
来实例化一个map对象,然后存储的顺序就是你输入时候的顺序,这样当你使得value的值不重复时,就可以使用这个方法啦,只要改一下下实例化的对象名字就ok。
private static
LinkedHashMap
map;//存储字符及其对应的编码
public static void hashMap(int first)//first表示
public <K, V> Entry<K, V> getHead(
LinkedHashMap
<K, V> map) {
return map.entrySet().iterator().next();
获取
LinkedHashMap
中的末尾元素(最近添加的元素):时间复杂度O(n)
public <K, V> Entry<K, V> getTa
搬运自:https://www.cnblogs.com/xinxin-ting/p/9234224.html
HashMap的遍历常用的方法有,使用keyset,entryset 和 Lamdba表达式
第一种: 使用 entryset
Map map = new HashMap();
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) ite