1、hashMap和linkedHashMap和treeMap

1 * LinkedHashMap是继承于HashMap,是基于HashMap和双向链表来实现的。

2 * HashMap无序;LinkedHashMap有序,可分为插入顺序和访问顺序两种。

3 * 如果是访问顺序,那put和get操作已存在的Entry时,都会把Entry移动到双向链表的表尾(其实是先删除再插入)。

4 * LinkedHashMap存取数据,还是跟HashMap一样使用的Entry[]的方式,双向链表只是为了保证顺序。

5 * LinkedHashMap是线程不安全的。

hashMap示例

//无序

Map hashMap = new HashMap<>();

hashMap.put("No1","小明1");

hashMap.put("No2","小明2");

hashMap.put("No3","小明3");

System.out.println("hashMap=>" + hashMap);

linkedHashMap示例

1 // 有序,线程不安全,双向链表

2 // LinkedHashMap默认的构造参数是默认按照插入顺序的,就是说你插入的是什么顺序,3 3 读出来的就是什么顺序, 但是也有访问顺序,就是说你访问了一个key,这个key就跑到了最4 后面

5 // 这里accessOrder设置为false,表示不是访问顺序而是插入顺序存储的,这也是默认值,

6 // 表示LinkedHashMap中存储的顺序是按照调用put方法插入的顺序进行排序的。

7 LinkedHashMap也提供了可以设置accessOrder的构造方法

8 Map linkedHashMap = new LinkedHashMap<>(16,0.75f,true);

9 linkedHashMap.put("No1","小明1");

10 linkedHashMap.put("No2","小明2");

11 linkedHashMap.put("No3","小明3");

12 System.out.println("开始时=>linkedHashMap=>" + linkedHashMap);

13 //set 迭代

14 // Set> set = hashMap.entrySet();

15 // System.out.println(set);

16 // Iterator> iterator = set.iterator();

17 // while(iterator.hasNext()){

18 // Map.Entry entry = iterator.next();

19 // System.out.println("key=>" + (String) entry.getKey());

20 // System.out.println("value=>" + (String) entry.getValue());

21 // }

22 Set> set2 = linkedHashMap.entrySet();

23 Iterator> iterator2 = set2.iterator();

24 while(iterator2.hasNext()){

25 Map.Entry entry = iterator2.next();

26 String key = (String) entry.getKey();

27 String value = (String) entry.getValue();

28 System.out.println("key:" + key + ",value:" + value);

29 }

30 String s = linkedHashMap.get("No2");

31 System.out.println("结束时=>linkedHashMap=>" + linkedHashMap);

32 Set> set3 = linkedHashMap.entrySet();

33 Iterator> iterator3 = set3.iterator();

34 while(iterator3.hasNext()){

35 Map.Entry entry = iterator3.next();

37 String key = (String) entry.getKey();

38 String value = (String) entry.getValue();

39 System.out.println("key:" + key + ",value:" + value);

40 }

treeMap

1 // TreeMap中默认的排序为升序,如果要改变其排序可以自己写一个Comparator

2 TreeMap treeMap = new TreeMap();

3 treeMap.put("No1",1);

4 treeMap.put("No3",3);

5 treeMap.put("No2",2);

6 System.out.println("treeMap=>" + treeMap);

请保持微笑的眼睛,才能看到更多美丽的风景 余生很贵,请勿浪费

java linkedhashmap_java学习-hashMap和linkedHashMap相关推荐

  1. java集合类学习笔记之LinkedHashMap

    1.简述 LinkedHashMap是HashMap的子类,他们最大的不同是,HashMap内部维护的是一个单向的链表数组,而LinkedHashMap内部维护的是一个双向的链表数组.HashMap是 ...

  2. 彻底理解HashMap及LinkedHashMap

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:https://blog.csdn.net/fuzhongmin05/article/details/104355841 Ha ...

  3. Java—Map集合详解(HashMap/Hashtable/LinkedHashMap/Properties/TreeMap/WeakHashMap/IdentityHashMap/EnumMap)

    关注微信公众号:CodingTechWork,一起学习进步. Map Map集合介绍   Map(也称为字典.关联数组)是用于保存具有映射关系的数据,保存两组值,key和value,这两组值可以是任何 ...

  4. 【Java集合学习系列】HashMap实现原理及源码分析

    HashMap特性 hashMap是基于哈希表的Map接口的非同步实现,继承自AbstractMap接口,实现了Map接口(HashTable跟HashMap很像,HashTable中的方法是线程安全 ...

  5. Java多线程学习二十:HashMap 为什么是线程不安全的

    为什么 HashMap 是线程不安全的?而对于 HashMap,相信你一定并不陌生,HashMap 是我们平时工作和学习中用得非常非常多的一个容器,也是 Map 最主要的实现类之一,但是它自身并不具备 ...

  6. 深入Java集合学习系列:LinkedHashSet的实现原理

    转载自  深入Java集合学习系列:LinkedHashSet的实现原理 1.    LinkedHashSet概述: LinkedHashSet是具有可预知迭代顺序的Set接口的哈希表和链接列表实现 ...

  7. java入门学习_Java入门学习进阶知识点

    Java入门学习进阶知识点 入门阶段,主要是培养Java语言的编程思想.了解Java语言的语法,书写规范等,掌握Eclipse.MyEclipse等开发工具,编写Java代码的能力.学完这个阶段你应该 ...

  8. java hashset 实现原理_深入Java集合学习系列:HashSet的实现原理

    Updated on 九月 8, 2016 深入Java集合学习系列:HashSet的实现原理 1.HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持. ...

  9. 深入Java集合学习系列:HashSet的实现原理

    引用自 http://www.cnblogs.com/xwdreamer/archive/2012/06/03/2532999.html, 作者:xwdreamer 深入Java集合学习系列:Hash ...

最新文章

  1. C:内存中供用户使用的存储空间
  2. 程序员最讨厌的9句话,你可有补充?
  3. CodeForces - 1245C Constanze's Machine(思维+找规律)
  4. Spring源码:FactoryBean
  5. 卷积神经网络原理_人脸识别背后,卷积神经网络的数学原理原来是这样的
  6. Springboot2.x使用redis作为缓存
  7. mpu6050 重力加速度_MPU6050抄底解读
  8. Java游戏小李飞镖,安全工程与虚拟技术部双节活动
  9. SQL语句和EF Group by 用法
  10. SNMPv3对安全威胁的分类
  11. 【面试题】---前端需要掌握的知识点-----更新...
  12. python内置类型
  13. Open-Unmix - A Reference Implementation for Music Source Separation
  14. vivo手机如何开启云服务器,怎么开启vivo手机中的云服务自动备份功能
  15. C++使用万能头文件报错
  16. vue 网页点击置顶图标缓慢置顶
  17. Linux数独小游戏C语言,C语言数独游戏的求解方法
  18. 手把手教你申请CSDN博客专家(2021新鲜出炉)
  19. 【物理应用】Matlab实现两端固支梁热力耦合的有限元分析
  20. 助力奈雪,发掘茶饮品牌元宇宙新玩法

热门文章

  1. Java-使用JavaMail发送一封邮件给用户邮箱功能实现
  2. Lambda-函数式接口(1)
  3. SVM支持向量机【直观理解】
  4. 算法练习day7——190325(比较器、不基于比较的排序、maxGap、数组实现栈和队列、minStack)
  5. 单机版五子棋java功能_java实现单机版和网络对战版五子棋程序
  6. java与flex通信_Flex与Java通信教程
  7. python中的np where_python – np.where在我的熊猫中不起作用
  8. ubuntu / 18.04 系统上配置 DHCP Server
  9. C/Cpp / STL / map 和 set 的不同点和相同点。
  10. Android Framework增加API 报错 Missing nullability on parameter