java集合系列
工作以来,一直对java集合理解的不够全面,不够深入,就是常用的ArrayList/HashMap/Set/List,有时候会用一下LinkedList。一时兴起,可能对TreeSet,HashSet有点兴趣。不过集合这些公司面试经常问的,特别是高大上的公司还问的特别深。所以自己搜索一些资料,按自己的理解重新整理一下。
java的集合框架图:http://www.cnblogs.com/lmy-foolishbird/p/5405641.html

关键点:
1.顶级接口:java.util.Collection,java.util.Iterator. (java.lang.Iterable不是java.util里的。实现了Iterable接口的类可以通过Iterator来遍历集合Collection,不过遍历Map)
2.Collection下面子接口决定内部元素有序还是无序:
List接口,列表,常用的具体实现有数组实现的ArrayList,链表实现的LinkedList.都允许添加重复的元素。无序
Set接口,集合,不允许重复元素的。常见实现类有HashSet(通过Map的HashMap实现,无序),TreeSet(通过Map的TreeMap实现,有序还实现的SortedSet接口,所以是有序的)
Deque接口,队列,双向的
Vector类是一个向量数组,可以实现可增长的对象数组,通常的实现是Stack栈,先进后出;
3.集合框架里用了一种设计模式:适配器模式。适配器模式的关键点:如果一个雷,想实现一个接口的部分方法,不是全部的,这个时候添加一个中间的抽象类,这个抽象类实现接口中所有方法,然后我们自己的最前线的实现类继承这个抽象类,实现抽象类的部分方法就可以了。
比如:Map接口,通过AbstractMap抽象,在到具体的TreeMap,HashMap实现类。
4.Arrays和Collections工具类,是用来操作数组、集合的两个工具类。
5.后面源码都是以jdk1.8查的
java集合系列的更多相关文章
- 深入java集合系列文章
		
搞懂java的相关集合实现原理,对技术上有很大的提高,网上有一系列文章对java中的集合做了深入的分析, 先转载记录下 深入Java集合学习系列 Java 集合系列目录(Category) HashM ...
 - Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)
		
概要 前面,我们已经学习了ArrayList.接下来,我们以ArrayList为例,对Iterator的fail-fast机制进行了解.内容包括::1 fail-fast简介2 fail-fast示例 ...
 - Java 集合系列目录(Category)
		
下面是最近总结的Java集合(JDK1.6.0_45)相关文章的目录. 01. Java 集合系列01之 总体框架 02. Java 集合系列02之 Collection架构 03. Java 集合系 ...
 - Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例
		
概要 前面,我们已经学习了ArrayList,并了解了fail-fast机制.这一章我们接着学习List的实现类——LinkedList.和学习ArrayList一样,接下来呢,我们先对Linked ...
 - Java 集合系列07之 Stack详细介绍(源码解析)和使用示例
		
概要 学完Vector了之后,接下来我们开始学习Stack.Stack很简单,它继承于Vector.学习方式还是和之前一样,先对Stack有个整体认识,然后再学习它的源码:最后再通过实例来学会使用它. ...
 - Java 集合系列10之 HashMap详细介绍(源码解析)和使用示例
		
概要 这一章,我们对HashMap进行学习.我们先对HashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashMap.内容包括:第1部分 HashMap介绍第2部分 HashMa ...
 - Java 集合系列11之 Hashtable详细介绍(源码解析)和使用示例
		
概要 前一章,我们学习了HashMap.这一章,我们对Hashtable进行学习.我们先对Hashtable有个整体认识,然后再学习它的源码,最后再通过实例来学会使用Hashtable.第1部分 Ha ...
 - Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)
		
概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Ja ...
 - Java 集合系列18之 Iterator和Enumeration比较
		
概要 这一章,我们对Iterator和Enumeration进行比较学习.内容包括:第1部分 Iterator和Enumeration区别第2部分 Iterator和Enumeration实例 转载请 ...
 - Java 集合系列14之 Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)
		
概要 学完了Map的全部内容,我们再回头开开Map的框架图. 本章内容包括:第1部分 Map概括第2部分 HashMap和Hashtable异同第3部分 HashMap和WeakHashMap异同 转 ...
 
随机推荐
- iOS开发之UICollectionViewController
			
1.概述 UICollectionView控件主要是用来做九宫格的,类似于android中的GridView控件.其用法与UITableView一样,首先要使控制器遵守数据源协议,再将控制器设置为UI ...
 - go单元测试进阶篇
			
作者介绍:熊训德(英文名:Sundy),16年毕业于四川大学大学并加入腾讯.目前在腾讯云从事hadoop生态相关的云存储和计算等后台开发,喜欢并专注于研究大数据.虚拟化和人工智能等相关技术. 本文档说 ...
 - 一个简单用原生js实现的小游戏----FlappyBird
			
这是一个特别简单的用原生js实现的一个小鸟游戏,比较简单,适合新手练习 这是html结构 <!DOCTYPE html><html lang="en">&l ...
 - 老李分享:webservice是什么?1
			
老李分享:webservice是什么? 前言 Web Services 是 Web 应用出于和其他 Web 应用以交互数据为目的的开放式标准(XML.SOAP.HTTP 等).Web Servic ...
 - Angularjs 动态添加指令并绑定事件
			
先说使用场景,动态生成DOM元素并绑定事件,非常常见的一种场景,用jq实现效果: http://jsbin.com/gajizuyuju/edit?html,js,output var count=0 ...
 - Hibernate三种状态及生命周期
			
临时状态---使用new操作符的对象不能立刻持久,也就是说没有任何跟数据库相关的行为, 只要应用不再使用这些对象,状态会丢失,并由垃圾回收机制回收持久对象---持久实例是具有数据库标识的实例.统一又S ...
 - Statistical Models and Social Science
			
1.1 Statistical Models and Social Reality KEY: complex society v.s statistical models relationship,d ...
 - idea + mybatis generator + maven 插件使用
			
idea + mybatis generator + maven 插件使用 采用的是 generator 的 maven 插件的方式 ~ 1 pom.xml mybatis其它配置一样,下面是配置my ...
 - Python中字符串拼接的三种方式
			
在Python中,我们经常会遇到字符串的拼接问题,在这里我总结了三种字符串的拼接方式: 1.使用加号(+)号进行拼接 加号(+)号拼接是我第一次学习Python常用的方法,我们只需要把我们要加 ...
 - B/S 和 C/S两种架构
			
一: 什么是B/S(Browser/Server)架构? 应用系统完全放在应用服务器上, 并通过应用服务器同数据库服务器进行通信,系统界面 是通过浏览器来展现的. T是浏览器模式. 优点: 1)客户端 ...