1.集合: 存放引用数据类型的容器。 主要学增删改查
Collection: 集合,是一个接口,继承了Iterable,里面有很多方法
List: 也是一个接口,继承了Collectio.
特点: 有序,可以重复
Set: 也是一个接口,继承了Collectio
特点: 无序,不重复java
Map:
2.ArrayList: (add、get、size()、sort()最常用)
特点: 内存空间连续
add()
remove(): 只能删除一个,如果有重复的数据,删除第一个
get() : 通过索引获取
set():
size(): 获取元素个数的
sort()
contains(Object o)
ArrayList: 底层是Object数组。所有的增删改查都是基于数组进行的。
size: ArrayList里面标记元素个数的。
添加的逻辑:
如果底层的数组元素满了,就要扩容,扩容1.5倍。然后将元素添加到容器
3. ArrayList和LinkedList区别:
ArrayList: 查询快,增删慢
LinkedList 查询慢,增删快
4.hashSet和ArrayList区别:
hashSet:无序,不重复
ArrayList:有序,可以重复
5.hashSet和hashtable区别:
hashSet线程不安全 效率高
Hashtable 线程安全,效率低
6.使用场景:去重
7.迭代器:iterator
- hasNext
- next
8.增强for循环 foreach循环
实现了Iterable接口的都可以用
for(泛型数据类型 变量 : 集合名称){
操作变量
}
优点: 简单明了
缺点: 不能操作索引
9.HashMap: 双列集合 <K,V> (get、put常用)
put 如果键存在就是修改,不存在就是添加。
get
remove
size
keySet
10.面试题:
jdk8 以后HashMap的数据结构是: 数组+ 链表+ 红黑树
当放入某个元素的时候,hashCode算出来要放入的位置,该位置存在元素,那么就以链表的方法放到下面,
如果元素超过8个,就变成红黑树。
如果红黑树的情况下,map删除元素,当红黑树中的元素少于6个的时候,红黑树变成链表。 泊松分布。
HashMap初始化的时候,数组长度为16.
负载因子 0.75.
扩容2倍
11.工具类 Collections (sort、addAll常用)
- sort
- reverse
- shuffle
- min
- max
- addAll
12.数组和ArrayList转换
Integer[] array = list.toArray(new Integer[0]);
List.of(数组名称)