直接举例说明。

运行如下例子程序

 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。

最新文章

  1. ASP.NET Core 中间件详解及项目实战
  2. TomCat的安装与配置方法
  3. Python之Web框架Django
  4. linux 搜索相关命令(2)
  5. SQL 日期转换(阳历转阴历)
  6. Trac与Apache的配合
  7. MaidSafe.net,一个完全去中心的化的云存储系统
  8. digitalocean开通德国法兰克福机房,40Gb带宽,支持IPv6
  9. JS中new的运行方式
  10. 济南清北学堂游记 Day 2.
  11. Python系列文章
  12. Android破解学习之路(九)—— 练手破解游戏集合
  13. 推荐写作平台gitbook&mdash;&mdash;让我们换一种形式写作
  14. 题解——洛谷P4767 [IOI2000]邮局(区间DP)
  15. 将Vue-cli搭建的项目改造成多页面应用时对项目结构和配置的调整
  16. Flask 邮件发送
  17. 自制小工具含源码——SPTC上海交通卡余额查询
  18. 2014年王道论坛研究生机试练习赛(二)set 2 货币问题
  19. ballerina 学习三 根据swagger 以及protobuf 生成code
  20. 68、 FragmentPagerAdapter+ViewPager实现Tab

热门文章

  1. 关于纯css写三角形在firefox下的锯齿问题
  2. siriWave.js的demo
  3. Oracle INSERT ALL 语句介绍
  4. vue中全局引入bootstrap.css
  5. hdu 2063 过山车(模板)
  6. linux 获取当前程序路径
  7. B+/-Tree原理(mysql索引数据结构)
  8. GIT团队合作探讨之三--使用分支
  9. mysql 免安装版文件含义及作用
  10. Oracle GoldenGate 详解