Collection Map Java数据结构
Collection Map 框架图
Collection          接口的接口   对象的集合 
├ List                   子接口      按进入先后有序保存   可重复 
│├ LinkedList                接口实现类   链表   插入删除   没有同步   线程不安全 
│├ ArrayList                  接口实现类   数组   随机访问   没有同步   线程不安全 
│└ Vector                      接口实现类   数组                  同步        线程安全 
│   └ Stack
└ Set                   子接口       仅接收一次,并做内部排序
├ HashSet
│   └ LinkedHashSet
└ TreeSet
对于 List ,关心的是顺序, 它保证维护元素特定的顺序(允许有相同元素),使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在 List 中的位置,类似于数组下标)来访问 List 中的元素。
对于 Set ,只关心某元素是否属于 Set (不 允许有相同元素 ),而不关心它的顺序。
Map                接口      键值对的集合 
├ Hashtable                  接口实现类                  同步           线程安全 
├ HashMap                   接口实现类                  没有同步    线程不安全
│├ LinkedHashMap
│└ WeakHashMap
├ TreeMap
└ IdentifyHashMap
对于 Map ,最大的特点是键值映射,且为一一映射,键不能重复,值可以,所以是用键来索引值。 方法 put(Object key, Object value) 添加一个“值” (想要得东西 ) 和与“值”相关联的“键” (key) ( 使用它来查找 ) 。方法 get(Object key) 返回与给定“键”相关联的“值”。
Map 同样对每个元素保存一份,但这是基于 " 键 " 的, Map 也有内置的排序,因而不关心元素添加的顺序。如果添加元素的顺序对你很重要,应该使用 LinkedHashSet 或者 LinkedHashMap.
对于效率, Map 由于采用了哈希散列,查找元素时明显比 ArrayList 快。
摘抄:几个具体区别
HashMap和Hashtable的区别
- HashMap是线程不安全的
 - HashTable 在HashMap的方法上都加入synchronized,所以是线程安全,但速度较慢
 - 另一个区别是HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。所以当有其它线程改变了HashMap的结构(增加或者移除元素),将会抛出ConcurrentModificationException,但迭代器本身的remove()方法移除元素则不会抛出ConcurrentModificationException异常。但这并不是一个一定发生的行为,要看JVM。这条同样也是Enumeration和Iterator的区别。
 
HashMap和ConcurrentHashMap
从ConcurrentHashMap代码中可以看出,它引入了一个“分段锁”的概念,具体可以理解为把一个大的Map拆分成N个小的HashTable,根据key.hashCode()来决定把key放到哪个HashTable中。
在ConcurrentHashMap中,就是把Map分成了N个Segment,put和get的时候,都是现根据key.hashCode()算出放到哪个Segment中:
ArrayList,Vector,LinkedList
LinkedList 主要保证元素的顺序,是线程不安全
ArrayList,vector 都是采用连续数组的形式存储,但ArrayList 线程不安全,Vector线程安全
文章参考:http://blog.csdn.net/zccst/article/details/5056920
Collection Map Java数据结构的更多相关文章
- java  基础 --Collection(Map)
		
Map是不是集合?哈哈哈 java编程思想>的第11章,第216页,正数第13行,中原文:“……其中基本的类型是LIst.Set.Queue和Map.这些对象类型也称为集合类,但由于Java类库 ...
 - 【DateStructure】 Charnming usages of Map collection in Java
		
When learning the usage of map collection in java, I found serveral beneficial methods that was enco ...
 - Java数据结构之Map学习总结
		
前言: 前面学习总结了List的使用及效率对比,今天总结学习一下键值映射关系Map,顺便学习一下Android中使用Map需要注意哪些,以及谷歌官方针对Android对Map做了哪些优化. 先了解下M ...
 - (6)Java数据结构-- 转:JAVA常用数据结构及原理分析
		
JAVA常用数据结构及原理分析 http://www.2cto.com/kf/201506/412305.html 前不久面试官让我说一下怎么理解java数据结构框架,之前也看过部分源码,balab ...
 - Java 学习(15):Java 数据结构
		
Java 数据结构 Java工具包提供了强大的数据结构.在Java中的数据结构主要包括以下几种接口和类: 枚举(Enumeration) 位集合(BitSet) 向量(Vector) 栈(Stack) ...
 - Java数据结构HashMap
		
java数据结构HashMap /** * <html> * <body> * <P> Copyright JasonInternational</p> ...
 - Map java中的map 如何修改Map中的对应元素
		
Map java中的map 如何修改Map中的对应元素 Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象. Map的接口 Map ...
 - Java数据结构之线性表(2)
		
从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...
 - Java数据结构之Set学习总结
		
前言: 前面介绍了Java的数据结构List.Map,今天抽空学习总结一下另一种数据结构Set. Set介绍 Set相对于List.Map是最简单的一种集合.集合中的对象不按特定的方式排序,并且没有重 ...
 
随机推荐
- Linux磁盘及文件系统管理2
			
创建文件系统: 格式化:低级格式化(分区之前进行,划分磁道).高级格式化(分区之后对分区进行,创建文件系统) 元数据区,数据区 元数据区: 文件元数据:inode(index node) 大小.权限. ...
 - PAT Basic 1072 开学寄语 (20 分)
			
下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其 QQ,封其电脑,夺其手机,收其 ipad,断其 wifi,使其百无聊赖,然后,净面.理发.整衣,然后思过.读书.锻炼.明智. ...
 - IDEA常见问题和设置
			
1.查看方法的文档:快捷键 Ctrl-Q(Ctrl-J(mac)) 2.历史记录 3.IDEA控制台输出中文乱码问题 4.修改Idea默认的maven等全局设置 5.idea 启动时报错javax.i ...
 - Mapreduce案例之Pi值估算
			
题目: 这个程序的原理是这样的.假如有一个边长为1的正方形.以正方形的一个端点为圆心,以1为半径,画一个圆弧,于是在正方形内就有了一个直角扇形.在正方形里随机生成若干的点,则有些点是在扇形内,有些点是 ...
 - formData+ajax文件上传
			
html代码: <form class="form-horizontal" enctype="multipart/form-data" method=&q ...
 - flutter 跳转至根路由
			
上代码 //flutter 登录后跳转到根路由 Navigator.of(context).pushAndRemoveUntil( new MaterialPageRoute(builder: (co ...
 - 多个idea项目使用同一个tomcat
			
配置好tomcat后,每个项目使用不同的虚拟路径.并且把tomcat端口改为不一样的就可以了.
 - python计算余弦复杂度
			
import numpy as np from sklearn.metrics.pairwise import cosine_similarity a = np.array([1, 2, 3, 4]) ...
 - JVM(十二),垃圾回收面试题
			
十二.垃圾回收面试题 1.Object的finalize()方法 2.Java中的强软弱虚四种引用 (1)强引用 (2)软引用(间接引用) (3)弱引用 (4)虚引用 (5)四种引用区别
 - Web大文件分片上传
			
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 先说下要求: PC端全平台支持,要求支持Windows,Mac,Linux 支持所 ...
 
			
		