直接举例说明。

运行如下例子程序

 mport java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map; /**
* Created by longger on 2017/11/16.
*/
public class AboutMap { public static void main(String[] args) {
Map<String,String> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("100","屠龙");
linkedHashMap.put("22","倚天");
linkedHashMap.put("1","zzz");
System.out.println("***************LinkedHashMap****************"); for(Iterator it = linkedHashMap.keySet().iterator();it.hasNext();){
Object key = it.next();
System.out.println(key + "=" + linkedHashMap.get(key));
} Map<String,String> map = new HashMap<>();
map.put("100","屠龙");
map.put("22","倚天");
map.put("1","zzz"); System.out.println("*********HashMap*****");
for(Iterator it = map.keySet().iterator();it.hasNext();){
Object key = it.next();
System.out.println(key + "=" + map.get(key));
}
}
}

运行结果:

***************LinkedHashMap****************
100=屠龙
22=倚天
1=zzz
*********HashMap*****
22=倚天
100=屠龙
1=zzz

从结果来分析,hashMap 存储数据不是顺序存储的,存储位置并不确定。

linkedHashMap 存储数据,数据位置不会发生变化。

作为拓展,可以继续理解Map.

map这个接口有四个实现类,分别是 HashMap 、HashTable、LinkedHashMap、TreeMap。

HashMap,存储键值对。根据键得到值,因此不允许键(key)重复,值(value)可以重复。

HashMap 的 特点:

1.HashMap 具有很快的访问速度。 put进去的数据,存储位置是不确定的。

2.hashMap 键 key 是唯一的,不允许重复,并且 只允许一个key 为 null.允许 多个value 值相同,且为null.

3.HashMap 不是同步的,即多个进程同事操作HashMap 会产生数据不一致的问题。是HashMap 同步 可以 使用 Collections的synchronizedMap 方法,对hashMap 进行转换处理,使其拥有同步能力。或者直接使用 ConcurrentHashMap。

HashTable的特点

HashTable 和 HashMap 都是继承 Dictionary 类。方法和属性一致。

区别在于:

1.HashTable 不允许 key 或者 value 为 null.

2.HashTable 是线程同步的,因此在写入时,速度会慢一些。

LinkedHashMap 特点

LinkedHashMap是 HashMap的一个子类。对HashMap的一个拓展。

1.linkedHashMap 保存了记录的存储顺序。在使用 iterator 遍历是,先输出的是先 put进去的记录。

2.遍历时,会比HashMap慢。但是,在一种情况下例外,HashMap容量很大,里面的实际数据不是很多,LinkedHashMap遍历速度会快些。这是因为LinkedHashMap遍历数据时,只关注实际存在的数据,和容量大小无关。

TreeMap

TreeMap 实现了SortMap 接口。

TreeMap,对存储的数据,会按照Key 进行排序。默认是按照key值升序排序。也可以指定比较器。当使用Iterator遍历时,得到的结果是排序后的结果。

总结:

选择了一个满足功能的数据结构之后,然后关注点就在于效率。

异步和排序都会影响速度。异步会影响数据的存取速度。排序会影响数据的遍历速度。

因此,在没有同步和排序情况下面,用的最多是HashMap,它存储速度快。如果要求数据存入顺序和输出顺序一致,可以使用linkedHashMap。如果对数据需要进行排序,可以使用TreeMap.用到同步是而且要求存入的数据不能有null值,可以使用HashTable。

hashMap 和 linkedHashMap 的区别和联系的更多相关文章

  1. HashMap与LinkedHashMap的区别

    /**         * remark:         * HashMap与LinkedHashMap的区别         * 这里必须使用LinkedHashMap:         * 原因 ...

  2. HashMap和LinkedHashMap的区别

    参考:https://blog.csdn.net/a822631129/article/details/78520111 java为数据结构中的映射定义了一个接口java.util.Map;它有四个实 ...

  3. Java - HashTable、HashMap和LinkedHashMap的区别

    一般情况下,我们用的最多的是HashMap,在Map 中插入.删除和定位元素,HashMap 是最好的选择.但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好.如果需要输出的顺序和输入的 ...

  4. TreeMap,HashMap,LinkedHashMap区别,很简单解释

    TreeMap,HashMap,LinkedHashMap之间的区别和TreeSet,HashSet,LinkedHashSet之间的区别相似. TreeMap:内部排序. HashMap:无序. L ...

  5. HashMap和LinkedHashMap区别

    import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.uti ...

  6. StackOverflow之旅<2>------{HashMap和Hashtable的区别}

    问题 在Java中HashMap和Hashtable的区别? 哪一个对于多线程应用程序更好? 回答 Hashtable是同步的,加了synchronized锁,而HashMap不是.没有加synchr ...

  7. 接口java.util.Map的四个实现类HashMap Hashtable LinkedHashMap TreeMap

    java中HashMap,LinkedHashMap,TreeMap,HashTable的区别 :java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMa ...

  8. java面试题——HashMap和Hashtable 的区别

    一.HashMap 和Hashtable 的区别 我们先看2个类的定义 public class Hashtable extends Dictionary implements Map, Clonea ...

  9. Map集合及与Collection的区别、HashMap和HashTable的区别、Collections、

    特点:将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值. Map集合和Collection集合的区别 Map集合:成对出现 (情侣)                       ...

随机推荐

  1. mysql 去除重复数据

    1. 问题描述 有时load或者insert操作导致 表数据有重复 2. 解决方案 通过临时表.主键id.倒腾去重 示例 2.1  create table student( name varchar ...

  2. 关于开发Cesium造成的电脑风扇狂飙的问题

    最近在开发Cesium的项目,每次一打开浏览器渲染3D 模型.风扇就狂飙起来,进任务管理器查看发现集显使用率100%,独显使用率0%.使用的是集显进行渲染.怪不得风扇会飙起来.既然知道问题所在,解决的 ...

  3. IntelliJ IDEA开发工具println报错的解决方法

    IntelliJ IDEA 编译 JSP,出现 out.println 报错,下图所示: 报错原因:println报红,这是因为没有关联好服务器! 解决方案:点击File->Project st ...

  4. 简单的自动升级提示AutoUpdater

    看过网上“圣殿骑士”和其他人的升级做法,感觉不太适合几十M的小型软件. 之前用的一直都是clickonce,但是3年下来感觉弊端太多,比如安装不能选择文件夹.打包不全.版本等问题,于是决定另辟捷径. ...

  5. 【2014-08-23】Beyong Coding

        be a product engineer,not be a engineer 选择比努力更重要   just code it,code it ,until you make it 缺的不是i ...

  6. android 多渠道打包

    android 多渠道打包 原理 在manifest文件中,application标签内部设置不同的metadata标签即可,可以通过java api获取这个matedata内的值 友盟提供的多渠道打 ...

  7. Redhat Linux 7.3 虚拟机通过USB挂载NTFS格式的移动硬盘

    分为如下几个步骤: 一.设置本地yum,安装gcc(如果本机已经安装gcc,则跳过此步) 在虚拟机连接linux iso安装盘 查看光盘挂载情况 mkdir /iso mount /dev/cdrom ...

  8. 任务十:Flexbox 布局练习

    任务目的 学习如何flex进行布局,学习如何根据屏幕宽度调整布局策略. 任务描述 需要实现的效果如效果图(点击打开)所示,调整浏览器宽度查看响应式效果,红色的文字是说明,不需要写在 HTML 中. 任 ...

  9. 树的各种操作java

    package mystudy; import java.io.UnsupportedEncodingException; import java.util.LinkedList; import ja ...

  10. AutoHotkey调用VBA实现批量精确筛选数据透视表某字段内容。

    如上图,想在数据透视表中只显示红色区域的内容,手动勾选就比较繁琐. 实现思路: 先复制红色的内容. 鼠标停留在数据透视表[型号]列的任意数据上(通过该单元格可以获取数据透视表和字段) 由于数据透视表的 ...