小菜鸟
大菜鸟。Java中的集合框架有哪些?
在java.util 包里,包含了 Collection、List、Set、Map、SortedMap 等接口这些接口的实现类有 LinkedList、TreeSet、ArrayList、HashMap 等。除了这些数据结构,java.util 包还提供了 Date、GregorianCalender、StringTokenizer、Random 这样的工具类。
大菜鸟
小菜鸟
那他们是怎么分类的呢?
分类的话你可以看下面的分类图
(源网络,侵删)
大菜鸟
接口:Collection、List、Map 组成了集合框架中所有具体实现类的接口,它们定义了子类必须实现的方法,非常好记。比如向集合添加元素,会用到 Collection 中定义的 add() 方法
大菜鸟
实现:所有实现了上述3个接口的类,都被称作集合框架,实际上就是数据结构。比如 LinkedList、TreeSet 等
大菜鸟
算法:集合框架提供了很多可以直接调用的算法,比如求最大最小值、排序、填充等
大菜鸟
小菜鸟
懂了,那他们有什么优缺点吗?
常用的几个集合的话有
ArrayList底层数据结构是数组,查询快,增删慢线程不安全,效率高
Vector底层数据结构是数组,查询快,增删慢线程安全,效率低LinkedList
底层数据结构是链表,查询慢,增删快线程不安全,效率高HashSet底层数据结构是哈希表。
哈希表依赖两个方法:hashCode()和equals()执行顺序:首先判断hashCode()值是否相同是:继续执行equals(),看其返回值是true:说明元素重复,不添加是false:就直接添加到集合否:就直接添加到集合
大菜鸟
HashMap
底层数据结构是哈希表。线程不安全,效率高
哈希表依赖两个方法:hashCode()和equals()执行顺序:首先判断hashCode()值是否相同是:继续执行equals(),看其返回值是true:说元素重复,不添加是false:就直接添加到集合否:就直接添加到集合最终:自动生成hashCode()和equals()即可LinkedHashMap
底层数据结构由链表和哈希表组成。由链表证元素有序。由哈希表保证元素唯一。Hashtable底层数据结构是哈希表。线程安全,效率低
哈希表依赖两个方法:hashCode()和equals()执行顺序:首先判断hashCode()值是否相同
是:继续执行equals(),看其返回值是true:说明元素重复,不添加是false:就直接添加到集合
否:就直接添加到集合
大菜鸟
小菜鸟
原来有这么多区别啊,学到了。
其实还有更多更多呢。这个是体系图
大菜鸟
小菜鸟
OK