Conllection集合接口框架分为 list列表、set集合
Conllections工具类也叫帮助类(静态方法,集合搜索、排序和线程安全等操作)
Map 集合接口框架有 map集合、Conllection和Map是平级的。
Conllection集合框架主要实现comparable和comparator 接口。
-
list集合接口(ArrayList、Vector、LinkList)
ArrayList 有序集合、底层:动态数组 、数据允许重复、线程不安全(如果一个线程访问,最好用ArrayList,不考虑线程安全,效率会很高 )、java2提供、数据增长策略1.5倍,可设置初始容量大小。
Vector 有序集合、底层:数组、数据允许重复、线程安全(如果多个线程访问,最好用Vector,不需要去考虑线程安全的代码 )、java一诞生提供的、数据增长策略2倍,可设置初始容量大小的同时也可以设置增长空间大小。
LinkList 底层:双向链表存值,前后遍历,线程不安全,
-
set集合接口(hashset)
set 无序集合、无重复元素(基于hashMap实现)、底层结构是哈希表、可以有null值,基于hashcode的某种运算方式来存值,不是按照hashcode的大小来存值。
HashSet底层数据结构是HashMap,通过Map的put方法存储新元素;put方法首先会通过hash(key)方法会判断key值中是否已存在,如果key存在,则只会把新的value赋值给key(onlyIfAbsent属性默认false)从而保证了key的唯一性。
set集合怎么区分重复:使用equals方法判断,决定引入值是否指向同一对象,内容相等,覆盖,返回真值。
-
Map集合接口(hashMap、hashTable、TreeMap、linkedHashMap)
-
Map集合键值不能重复,但value可以重复。
hashMap 无序集合,是HashTable轻量级实现、线程不安全、允许null值为key键或者Value键,有containskey和containsvalue方法,基于java1.2 引进的Map,底层:数组+链表,数组存值,链表存哈希值
hashTable 无序集合, 线程安全(不考虑线程安全代码,也是同步的)、不允许null值为key键或者Value键,有contains方法,继承Dictionary类、底层:数组+链表,加载同步锁
TreeMap 有序集合(默认是key升序,按照Key的自然顺序或是Comparator 的顺序进行排序),底层:双向链表
linkedHashMap 有序集合(数据插入顺序),底层:红黑树
方法:
- isEmpty() 集合是非为空
- set 替换下标元素
- contains 存指定值
- indexof 是否有存在下标,不存在出现0
遗留问题
1.如果两个集合对象中的用equals方法比较,如果相等,那么hashcode是否相等?
答案:相等,如果equals 相等,那么hashcode值必须相等。