Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类。
---
1. Collection: 又有两大类set,list。
- list(相当于普通数组,元素可重复):基本的三类
1 ArrayList: 元素单个,效率高,多用于查询,底层结构数组,有序。
2 LinkedList:元素单个,多用于插入和删除,底层结构双向链表,有序。
3 Vector: 元素单个,线程安全,多用于查询,底层结构数组,有序。
4 Stack:栈,先进后出
- set(数学意义上的集合,元素不可重复):
1 HashSet:HashSet的底层实际上是由HashMap实现的。其四个构造函数分别对应相应的HashMap。
2 TreeSet:其中的元素按照升序排列,缺省是按照自然顺序进行排序,意味着TreeSet中的元素要实现Comparable接口,或者有一个自定义的比较器Comparator。底层数据结构红黑树。
2.Map(存储键值对,key唯一):
1 HashMap:继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。HashMap 的实现不是同步的,这意味着它不是线程安全的,无序且值不唯一。
2 TresMap:是一个有序的key-value集合,它是通过红黑树实现的。有序,不安全,值也不唯一。
3 ConcurrentHashMap:线程安全的,使用的锁分段技术。