集合
Collection(单列集合)
List(有序,可重复)
ArrayList
底层数据结构是数组,查询快,增删慢
线程不安全,效率高
Vector
底层数据结构是数组,查询快,增删慢
线程安全,效率低
LinkedList
底层数据结构是链表,查询慢,增删快
线程不安全,效率高
Set(无序,唯一)
HashSet
底层数据结构是哈希表
哈希表依赖于两个方法:hashCode()方法和equals()方法
执行顺序:
首先判断hashCode()值是否相同
是:继续执行equals(),看起返回值
是true:说明元素重复,不添加
是false:就直接添加到集合
不是:就直接添加到集合
最终自动生成:hashCode()和equals()即可
LinkedHashSet
底层数据结构由哈希表和,链表组成
链表保证元素有序
由哈希表元素唯一
TreeSet
底层数据是红黑树(一种自平衡的二叉树)
如何保证元素唯一的呢?
根据比较的返回值是否为零来决定
如何保证元素的排序呢?
两种方法
自然排序(元素具备比较性)
让元素所属的类实现Comparable接口
比较器排序 (集合具有比较性)
让集合接受一个Comparator的实现类对象
Map(双列集合)
A: Map集合的数据接口仅仅针对键有效,与值无关
B:存储的是键值对形式的元素,键唯一,值可重复
HashMap 线程不安全,效率低
底层数据结构是哈希表
哈希表依赖于两个方法:hashCode()方法和equals()方法
执行顺序:
首先判断hashCode()值是否相同
是:继续执行equals(),看起返回值
是true:说明元素重复,不添加
是false:就直接添加到集合
不是:就直接添加到集合
最终自动生成:hashCode()和equals()即可
LinkedHashMap
底层数据结构由哈希表和,链表组成
链表保证元素有序
由哈希表元素唯一
Hashtable 线程安全,效率低
底层数据结构是哈希表
哈希表依赖于两个方法:hashCode()方法和equals()方法
执行顺序:
首先判断hashCode()值是否相同
是:继续执行equals(),看起返回值
是true:说明元素重复,不添加
是false:就直接添加到集合
不是:就直接添加到集合
最终自动生成:hashCode()和equals()即可
TreeMap
底层数据是红黑树(一种自平衡的二叉树)
如何保证元素唯一的呢?
根据比较的返回值是否为零来决定
如何保证元素的排序呢?
两种方法
自然排序(元素具备比较性)
让元素所属的类实现Comparable接口
比较器排序 (集合具有比较性)
让集合接受一个Comparator的实现类对象
如何选择使用哪一个集合
看需求
是否是键值对像形式
是:Map
键是否需要排序
是:TreeMap
不是:HashMap
不知道就使用HashMap
不是: Collection
元素是否唯一
是:Set
元素是否需要排序
是:TerrSet
不是:HashMap
不知道就使用HashMap
不是:List
是否需要安全
是:
Vector(其实我们也不是用它,后面我们讲解多线程以后,我们再回顾)
不是:ArrayList或者LinkedList
增删多:LinkedList
查询多;ArrayList
不知道,就使用ArratList
集合的常见方法及遍历方式
Collection
add()
remove()
contains()判断指定元素是否再集合中
iterator()迭代器
size()
遍历
增强for
迭代器
|---List
get()
遍历:
普通for
|---Set
Map
put()
remove
comtainsKey(),containsValue()
KeySet()
get()
value()
entrySet()
size()
遍历:
键找值
根据键值对对像分别找键找值
Collection集合和Map集合详细解释
最新推荐文章于 2024-01-22 05:10:11 发布