今天写了很多代码,用到了ArrayList,那么好 我们系统的再来了解一下java中的数据结果集的相关知识,java给我们提供了现成的工具类Collections,这里面包含了很多静态的方法,通过在开发中可以直接用到这些方法,当然还有个概念是Collection,这只是个接口,他是集合类的父接口,记住不是所有集合类的父接口,至少map不是,list和set是。下面我把详细的用图来解释集合类之间的区别
|
| 有順序 | 可重覆 | Thread safe | 排序 |
List | Vector | Yes | Yes | No | |
Stack | |||||
LinkedList | No | ||||
ArrayList | |||||
Set | HashSet | No | No | No | No |
LinkedHashSet | Yes | ||||
TreeSet | Yes | ||||
Map | Hashtable | No | No | Yes | No |
Properties | |||||
HashMap | No | ||||
LinkedHashMap | Yes | ||||
TreeMap | Yes |
我们在编程的过程中常常会用到ArrayList,Map,这根据我们项目中不同的返回类型来定义,对集合类理解到上面的层面是不够的,还需要了解每个集合的存储结构是怎样的,比如说LinkedList 他是双向链表存储模式,ArrayList是顺序存储类似于数组的存储模式等等。上面表格里提到了Thread safe这个问题,其实线程安全的问题可以理解为是否同步,同步则为线程安全,异步则不安全,对了,我记得有个经常会面试的问题:ArrayList是线程不安全的 是异步的,那么我们怎么使ArrayList为线程安全的?答案很简单,还记得上面说的java给我们提供的工具类Collections吗?在实例化ArrayList的时候: List arrayList = Collections.SyncronizedList(new ArrayList());ok 解决了 简单吧 所以说一定要熟悉那些java.util里面的源码 熟悉给我们带来的方便。继续前进!