LinkedHashMap/HashMap 介绍
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 介绍相关推荐
- Java源码详解零:HashMap介绍
文章目录 Java详解(0):HashMap介绍,HashMap的迭代,HashMap的线程安全问题 HashMap介绍 HashMap的迭代 HashMap的线程安全问题 Java详解(0):Has ...
- Java—Map集合详解(HashMap/Hashtable/LinkedHashMap/Properties/TreeMap/WeakHashMap/IdentityHashMap/EnumMap)
关注微信公众号:CodingTechWork,一起学习进步. Map Map集合介绍 Map(也称为字典.关联数组)是用于保存具有映射关系的数据,保存两组值,key和value,这两组值可以是任何 ...
- HashTable, HashMap, LinkedHashMap, ConcurrentHashMap
HashTable: 不允许null的key或value, 线程安全 HashMap: 允许一个null的key, 无限的null value, 非线程安全 LinkedHashMap: HashMa ...
- HashMap、TreeMap、Hashable和LinkedHashMap
Map是最重要的数据结构之一.开始会告诉怎么用HashMap.TreeMap.Hashtable和LinkedHashMap 1.Map概述 在Java SE中有4种Map的实现:HashMap.Tr ...
- JAVA复习5(集合——集合的遍历 Iteratorforeach、Enumeration——HashMap、HashTable、LinkedHashMap——map的遍历)
集合的遍历 Iterator foreach 掌握 Enumeration List Set 观察两个接口 迭代器输出 Iterator Set接口 或者 List 接口 都存在 ...
- JAVA day20、21 双列集合Map<K,V>:HashMap,LinkedHashMap,TreeMap,Hashtable, ConcurrentHashMap;JDK1.9新特性
一.Map<K,V> Java提供了专⻔的集合类⽤来存放这种这种⼀⼀对应的关系,叫做映射对象,即 java.util.Map 接⼝. 类型参数: K - 此映射所维护的键的类型 V - 映 ...
- HashMap、创建并遍历HashMap集合、LinkedHashMap
HashMap 创建并遍历HashMap集合 案例1: 键String类型,值String类型 案例2: 键Integer类型,值String类型 案例3:键String类型,值Student类型 案 ...
- java面试题29 牛客 以下关于集合类ArrayList、LinkedList、HashMap描述
java面试题29 牛客 以下关于集合类ArrayList.LinkedList.HashMap描述错误的是() A HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或 ...
- HashMap在JDK1.8和JDK1.7的区别(详解)
HashMap在JDK1.8和JDK1.7的区别 结论 先说结论,HashMap在1.7和1.8中最大的区别就是底层数据结构的变化,在1.7中HashMap采用的底层数据结构是数组+链表的形式,而在1 ...
最新文章
- 版权和许可协议的学习
- 安装kilo版本openstack-dashboard时出现的python compress command not found错误解决办法
- nginx和apache 配置
- Tomcat配置虚拟内存
- mysql id 不在集合里面_MySQL,PHP:从表中选择*,其中id不在数组中
- StringBuilder和Char[]在平台调用中的差异
- wxpython菜单的位置_wx.grid 怎么加菜单呀!
- Determining if ip address is already in use for device eth0
- 【共读Primer】8.[2.1] 基本内置类型(2) Page32
- android x5内核使用方法,android 快速教你集成腾讯X5内核
- 【精选】VI手册设计模板合集,附带源文件、预览图、精细分类
- 计算机里的文件夹可以加密吗,如何加密电脑中的文件夹
- 将文件夹压缩成zip文件的php代码、实现批量下载
- MySQL海量运维管理如何保障京东大促?
- 渣男劈腿,两个女生却逼他做出选择,结果......
- 名帖269 董其昌 行书临《颜真卿裴将军诗卷》
- GemFire 异步写和同步读
- Autocad毕业设计CAD机械练习图开始发放啦!
- Leetcode_35_Search Insert Position
- MoneyKing链游平台,元宇宙Web3.0黑马爆发
热门文章
- mysql for windows_mysql安装教程-windows版
- 苏泊尔电磁炉dcl6907_苏泊尔电磁炉c20显示E3故障检修
- python编程字符输入连接_python字符串连接的N种方式总结
- 简单的签到代码_签到功能,用 MySQL 还是 Redis ?
- 组合数字c语言do while,C语言初学do while语句(对输入数字字符,特殊符号等,进行统计).docx...
- gson 获取hasmap_GSON fromJson return LinkedHashMap instead of EnumMap
- mysql s索引 树_mysql 学习 - B+树索引
- check whether edge in face indices.
- RGB to xml(labelimg应用)
- pytorch保留比较高的epoch的权重