LinkedHashMap/HashMap(数҉据҉缓҉存҉准҉备҉)

顾名思义LinkedHashMap是比HashMap多了一个链表的结构。与HashMap相比LinkedHashMap维护的是一个具有双重链表的HashMap,LinkedHashMap支持2中排序一种是插入排序,一种是使用排序,最近使用的会移至尾部例如 M1 M2 M3 M4,使用M3后为 M1 M2 M4 M3了,LinkedHashMap输出时其元素是有顺序的,而HashMap输出时是随机的,如果Map映射比较复杂而又要求高效率的话,最好使用LinkedHashMap,但是多线程访问的话可能会造成不同步,所以要用Collections.synchronizedMap来包装一下,从而实现同步。其实现一般为: 
    Map<String String> map = Collections.synchronizedMap(new LinkedHashMap(<String String));

HashMap,LinkedHashMap,TreeMap都属于Map

Map 主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复。

HashMap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力。

LinkedHashMap LinkedHashMap也是一个HashMap,但是内部维持了一个双向链表,可以保持顺序

TreeMap 不仅可以保持顺序,而且可以用于排序

HashMap例子:

    public static void main(String[] args) {        Map<String, String> map = new HashMap<String, String>();        map.put("a3", "aa");        map.put("a2", "bb");        map.put("b1", "cc");        for (Iterator iterator = map.values().iterator(); iterator.hasNext();) {            String name = (String) iterator.next();            System.out.println(name);        }    }

LinkedHashMap例子:

    public static void main(String[] args) {        Map<String, String> map = new LinkedHashMap<String, String>();        map.put("a3", "aa");        map.put("a2", "bb");        map.put("b1", "cc");        for (Iterator iterator = map.values().iterator(); iterator.hasNext();) {            String name = (String) iterator.next();            System.out.println(name);        }    }

TreeMap例子:

    public static void main(String[] args) {        Map<String, String> map = new TreeMap<String, String>(new Comparator<Object>(){            Collator collator = Collator.getInstance();             public int compare(Object o1, Object o2) {                CollationKey key1 = collator.getCollationKey(o1.toString());                CollationKey key2 = collator.getCollationKey(o2.toString());                return key1.compareTo(key2);                //return collator.compare(o1, o2);            }});        map.put("a3", "aa");        map.put("a2", "bb");        map.put("b1", "cc");        for (Iterator iterator = map.values().iterator(); iterator.hasNext();) {            String name = (String) iterator.next();            System.out.println(name);        }    }

运行这三个例子,体会一下它们之间的区别。

LinkedHashMap/HashMap 介绍相关推荐

  1. Java源码详解零:HashMap介绍

    文章目录 Java详解(0):HashMap介绍,HashMap的迭代,HashMap的线程安全问题 HashMap介绍 HashMap的迭代 HashMap的线程安全问题 Java详解(0):Has ...

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

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

  3. HashTable, HashMap, LinkedHashMap, ConcurrentHashMap

    HashTable: 不允许null的key或value, 线程安全 HashMap: 允许一个null的key, 无限的null value, 非线程安全 LinkedHashMap: HashMa ...

  4. HashMap、TreeMap、Hashable和LinkedHashMap

    Map是最重要的数据结构之一.开始会告诉怎么用HashMap.TreeMap.Hashtable和LinkedHashMap 1.Map概述 在Java SE中有4种Map的实现:HashMap.Tr ...

  5. JAVA复习5(集合——集合的遍历 Iteratorforeach、Enumeration——HashMap、HashTable、LinkedHashMap——map的遍历)

    集合的遍历 Iterator   foreach  掌握   Enumeration List    Set    观察两个接口 迭代器输出 Iterator Set接口 或者 List 接口 都存在 ...

  6. JAVA day20、21 双列集合Map<K,V>:HashMap,LinkedHashMap,TreeMap,Hashtable, ConcurrentHashMap;JDK1.9新特性

    一.Map<K,V> Java提供了专⻔的集合类⽤来存放这种这种⼀⼀对应的关系,叫做映射对象,即 java.util.Map 接⼝. 类型参数: K - 此映射所维护的键的类型 V - 映 ...

  7. HashMap、创建并遍历HashMap集合、LinkedHashMap

    HashMap 创建并遍历HashMap集合 案例1: 键String类型,值String类型 案例2: 键Integer类型,值String类型 案例3:键String类型,值Student类型 案 ...

  8. java面试题29 牛客 以下关于集合类ArrayList、LinkedList、HashMap描述

    java面试题29 牛客 以下关于集合类ArrayList.LinkedList.HashMap描述错误的是() A HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或 ...

  9. HashMap在JDK1.8和JDK1.7的区别(详解)

    HashMap在JDK1.8和JDK1.7的区别 结论 先说结论,HashMap在1.7和1.8中最大的区别就是底层数据结构的变化,在1.7中HashMap采用的底层数据结构是数组+链表的形式,而在1 ...

最新文章

  1. 版权和许可协议的学习
  2. 安装kilo版本openstack-dashboard时出现的python compress command not found错误解决办法
  3. nginx和apache 配置
  4. Tomcat配置虚拟内存
  5. mysql id 不在集合里面_MySQL,PHP:从表中选择*,其中id不在数组中
  6. StringBuilder和Char[]在平台调用中的差异
  7. wxpython菜单的位置_wx.grid 怎么加菜单呀!
  8. Determining if ip address is already in use for device eth0
  9. 【共读Primer】8.[2.1] 基本内置类型(2) Page32
  10. android x5内核使用方法,android 快速教你集成腾讯X5内核
  11. 【精选】VI手册设计模板合集,附带源文件、预览图、精细分类
  12. 计算机里的文件夹可以加密吗,如何加密电脑中的文件夹
  13. 将文件夹压缩成zip文件的php代码、实现批量下载
  14. MySQL海量运维管理如何保障京东大促?
  15. 渣男劈腿,两个女生却逼他做出选择,结果......
  16. 名帖269 董其昌 行书临《颜真卿裴将军诗卷》
  17. GemFire 异步写和同步读
  18. Autocad毕业设计CAD机械练习图开始发放啦!
  19. Leetcode_35_Search Insert Position
  20. MoneyKing链游平台,元宇宙Web3.0黑马爆发

热门文章

  1. mysql for windows_mysql安装教程-windows版
  2. 苏泊尔电磁炉dcl6907_苏泊尔电磁炉c20显示E3故障检修
  3. python编程字符输入连接_python字符串连接的N种方式总结
  4. 简单的签到代码_签到功能,用 MySQL 还是 Redis ?
  5. 组合数字c语言do while,C语言初学do while语句(对输入数字字符,特殊符号等,进行统计).docx...
  6. gson 获取hasmap_GSON fromJson return LinkedHashMap instead of EnumMap
  7. mysql s索引 树_mysql 学习 - B+树索引
  8. check whether edge in face indices.
  9. RGB to xml(labelimg应用)
  10. pytorch保留比较高的epoch的权重