集合大总结
2024-04-24 12:42:44 0 举报
AI智能生成
集合的大总结
作者其他创作
大纲/内容
单列集合
1.顶级接口
Collection
常用方法
boolean add(E e) : 将给定的元素添加到当前集合中(我们一般调add时,不用boolean接收,因为add一定会成功)
boolean addAll(Collection<? extends E> c) :将另一个集合元素添加到当前集合中 (集合合并)
void clear():清除集合中所有的元素
boolean contains(Object o) :判断当前集合中是否包含指定的元素
boolean isEmpty() : 判断当前集合中是否有元素->判断集合是否为空
boolean remove(Object o):将指定的元素从集合中删除
int size() :返回集合中的元素数。
Object[] toArray(): 把集合中的元素,存储到数组中
2.子接口
List
ArrayList
1.特点
a.元素有序
b.元素可重复
c.有索引
d.线程不安全
2.数据结构
数组
3.常用方法
boolean add(E e) -> 将元素添加到集合中->尾部(add方法一定能添加成功的,所以我们不用boolean接收返回值)
void add(int index, E element) ->在指定索引位置上添加元素
boolean remove(Object o) ->删除指定的元素,删除成功为true,失败为false
E remove(int index) -> 删除指定索引位置上的元素,返回的是被删除的那个元素
E set(int index, E element) -> 将指定索引位置上的元素,修改成后面的element元素
E get(int index) -> 根据索引获取元素
int size() -> 获取集合元素个数
4.底层实现原理
a.空参构造new对象,第一次add时初始化容量为10的数组
b.超出数组范围,自动扩容
Arrays.copyOf
c.扩容
1.5倍
LinkedList
1.特点
a.元素有序
b.元素可重复
c.有索引
d.线程不安全
2.数据结构
双向链表
3.特有方法
public void addFirst(E e):将指定元素插入此列表的开头。
public void addLast(E e):将指定元素添加到此列表的结尾。
public E getFirst():返回此列表的第一个元素。
public E getLast():返回此列表的最后一个元素。
public E removeFirst():移除并返回此列表的第一个元素。
public E removeLast():移除并返回此列表的最后一个元素。
public E pop():从此列表所表示的堆栈处弹出一个元素。
public void push(E e):将元素推入此列表所表示的堆栈。
public boolean isEmpty():如果列表不包含元素,则返回true。
Vector
1.特点
a.元素有序
b.元素可重复
c.有索引
d.线程安全
2.底层原理
a.一new底层会创建一个长度为10的数组
b.扩容
Arrays.copyOf
c.扩容多少倍
2倍
Set
HashSet
1.特点
a.无序
b.无索引
c.元素唯一
d.线程不安全
2.数据结构
哈希表
3.方法
参考Collection
4.去重复过程
a.先比较哈希值,再比较内容
b.如果哈希值不一样,可以存
c.如果哈希值一样,再比较内容
如果哈希值一样,内容不一样(哈希碰撞,哈希冲突),存
如果哈希值一样,内容一样,去重复,后面value覆盖前面value
5.存储自定义对象去重复
重写hashCode和equals方法
LinkedHashSet
1.概述
是HashSet的子类
2.特点
a.有序
b.无索引
c.元素唯一
d.线程不安全
3.数据结构
哈希表+链表
4.方法
参考Collection
TreeSet
1.特点
a.对元素进行排序
b.无索引
c.元素唯一
d.线程不安全
2.数据结构
红黑树
3.构造
TreeSet()
对元素进行自然排序
TreeSet(比较器)
指定排序规则
双列集合
1.顶级接口
Map
2.实现类
HashMap
1.特点
a.key唯一,value可重复
b.无序
c.无索引
d.线程不安全
e.能存储null键null值
2.数据结构
哈希表
3.方法
put(key,value)
存储键值对
get(key)
根据key获取value
remove(key)
根据key删除键值对
containsKey(key)
判断是否包含指定的key
values()
获取所有的value
keySet()
获取所有的key放到set集合中
entrySet()
获取所有的key和value,放到Set集合中
4.如何保证key唯一
和HashSet去重过程一样
5.如何保证key为自定义对象唯一
自定义对象重写hashCode和equals方法
LinkedHashMap extends HashMap
1.特点
a.key唯一,value可重复
b.有序
c.无索引
d.线程不安全
e.能存储null键null值
2.数据结构
哈希表+链表
3.其他和HashMap一样
TreeMap
1.特点
a.对key进行排序
b.key唯一,value可重复
c.无索引
d.线程不安全
2.数据结构
红黑树
3.构造
TreeMap()
TreeMap(比较器)
Hashtable
1.特点
a.key唯一,value可重复
b.无序
c.无索引
d.线程安全
e.不能存储null键null值
2.数据结构
哈希表
3.方法
参考HashMap
Properties
1.特点
a.key唯一,value可重复
b.无序
c.无索引
d.线程安全
e.不能存储null键null值
f.key和value默认必须是String
2.数据结构
哈希表
3.特有方法
String getProperty(String key) -> 根据key获取value
Object setProperty(String key, String value) -> 存储键值对
Set<String> stringPropertyNames() -> 获取所有的key,存放到set集合中
void load(InputStream inStream) -> 将流中的数据加载到Properties集合中 -> IO流再讲
其他
迭代器
1.概述
Iterator接口
2.获取
Collection中的方法
Iterator iterator()
3.方法
hasNext()
判断有没有下一个元素
next()
获取下一个元素
4.并发修改异常
a.注意
不要在迭代的过程中修改集合长度
b.原因
add时,只对实际操作次数+1,再次调用next方法,实际操作次数和预期操作次数不相等
增强for
1.格式
for(元素数据类型 变量名:集合名或者数组名){13; 变量名代表的就是元素13;}
2.快捷键
集合名或者数组名.for
3.注意
使用增强for遍历集合,底层原理为迭代器
使用增强for遍历数组,底层原理为普通for
泛型
a.含有泛型的类
public class 类名<E>{}
new对象时确定类型
b.含有泛型的方法
修饰符 <E> 返回值类型 方法名(E e){}
调用的时候确定类型
c.含有泛型的接口
public interface 接口名<E>{}
实现类时候确定类型
new实现类对象的时候确定类型
d.泛型高级使用
上限
<? extends 类>
?接收的类型为后面类的本类以及子类
下限
<? super 类>
?接收的类型为后面类的本类以及父类
数据结构
栈
先进后出
队列
先进先出
数组
查询快
增删慢
链表
查询慢
增删快
二叉树
查询快
集合工具类
static <T> boolean addAll(Collection<? super T> c, T... elements)->批量将元素存到集合中
static void shuffle(List<?> list) -> 将集合中的元素顺序打乱
static <T> void sort(List<T> list) ->将集合中的元素按照默认规则排序->ASCII
static <T> void sort(List<T> list, Comparator<? super T> c)->将集合中的元素按照指定规则排序
0 条评论
下一页