Collection
1、Collection常用方法
1、add(E,e)
-
添加元素到集合末尾
2、remove(Object o)
-
删除集合中的元素
3、removelf(Lambda表达式)
-
删除集合中满足条件的元素
4、contains(Object o)
-
判断集合中是否包含元素
5、isEmpty()
-
判断集合是否为空
6、size()
-
获取集合中的元素个数
7、toArray()
-
把集合转换为数组
2、Collection通用遍历方式
1、迭代器遍历
2、增强for遍历
3、forEach遍历
3、list集合
1、list集合特有方法
-
特点:有索引,有序,元素可以重复
-
-
2、add(int index,E e)
-
在指定索引位置添加元素
-
-
3、remove(int index)
-
在指定位置删除元素
-
-
4、set(int index,E e)
-
在指定索引为修改元素
-
-
5、get(int index)
-
在指定索引位置获取元素
-
-
2、list集合遍历方式
-
1、普通for
-
2、迭代器
-
3、增强for遍历
-
4、forEach遍历
3、ArraysList底层原理:
-
数据结构
-
数组结构
-
-
特点:
-
查询快,增删慢
-
4、LinkedList底层原理
-
数据结构
-
链表结构
-
-
特点:
-
查询慢,增删快
-
-
底层是双向链表结构,集合中特有的属性有头节点和尾节点,所以收尾很快
-
LinkedList集合应用场景
-
1、实现栈结构
-
先进后出,后进先出
-
-
2、实现队列结构
-
先进先出,后进后出
-
-
5、Set集合
-
1、HashSet集合底层原理
-
数据结构
-
哈希表结构
-
JDK8之前:数组+链表
-
JDK8之后:数组+链表+红黑树,旧数据指向新数据
-
-
-
特点:
-
保证元素唯一性
-
hashCode()和equals()
-
-
-
-
2、TreeSet集合底层原理
-
数据结构
-
红黑树结构
-
增删改查的性能都比较好
-
-
-
特点
-
对元素排序
-
可排序,不重复、无索引
-
-
Map、Collections工具类
1、泛型
1、认识泛型
-
概述:泛型是一种类型变量,可以在类上、方法上、接口上
-
格式:<T,K,V....>
-
T是一种数据类型,但是具体是什么类型,不知道
-
2、泛型类
-
格式:
-
class 类名<T>
-
-
创建对象时,确定类上泛型的具体类型
3、泛型接口
-
格式:
-
interface 接口名<T>
-
-
实现接口时,确定接口上泛型的具体类型
4、泛型方法
-
格式
-
修饰符<T> 方法名(T t)
-
-
调用方法时,确定方法上泛型的具体类型
2、Map集合
1、Map集合概述:
-
Map接口
-
HashMap类
-
键无序,无索引,不能重复
-
-
LinkedHashMap类
-
键有序,无索引,不能重复
-
-
TreeMap类
-
键可以排序,无索引,不能重复
-
-
2、Map集合常用方法
-
put:添加键值
-
get:根据键值获值
-
remove:根据键删除键值对
-
containsKey:判断是否包含键
-
values:获取所有的值,返回一个集合
-
isEmpty:判断集合是否为空
-
KeySet:获取所有键,存储到Set集合中并返回
-
entyySet:获取所有键值对对象,储存到一个Set集合中并返回
3、Map集合遍历
-
1、找键值
-
2、直接找键值对
-
3、forEach方法
3、可变参数
作用:
-
让方法可以接收到0到多个参数,使用方法调用更加灵活
格式:
-
方法名(数据类型...参数名)
本质:
-
可变参数本质上是一个数组,只是格式和数组不太一样,用法和数组一模一样
4、Collections工具类
Collections工具类
-
addAll:
-
往Collection集合中批量添加元素
-
-
shuffle:
-
打乱List集合中的元素
-
-
sort:
-
对List集合进行排序
-
Collection接口
规定了所有单列集合的共性方法: add(E e):添加元素到集合末尾 remove(Object e):删除集合的元素 clear():清空集合所有的元素 isEmpty():判断集合是否为空 contains(Object o):判断集合是否包含某个元素 toArray():把集合转换为数 size():获取集合的元素个数
List接口
特点:有序,有索引,可以重复
遍历方式:1、普通for
2、增强for 3、迭代器 4、forEach方法
相当于Collection来说新增了针对索引操作的方法:
-
add(int index,E e):往指定索引位置添加元素
-
remove(int index):删除指定索引位置的元素
-
set(int index,E e):用新的元素替换指定索引位置的元素
-
get(int index):获取指定索引位置的元素
ArrayList类
-
数组结构
-
按照数组结构重写了List和Collection的所有抽象方法
-
LinkedList类
-
链表结构
-
按照链表结构对List和Collection中的所有方法进行重写
-
新增:针对头,尾操作的方法
-
Set接口
特点:无序,无索引,不重复
遍历方式:
-
1、增强for
-
2、迭代器
-
3、forEach方法
HashSet类
-
哈希表结构:数组+链表
-
按照哈希表结构对Collection的方法进行重写
-
-
无序
-
保证元素唯一的方式:
-
重写hashCode方法
-
重写equals方法
-
-
LinkedHashSet类:
-
有序
-
双向链表+哈希表(数组+链表)
-
保证元素唯一的方式:
-
重写hashCode方法
-
重写equals方法
-
-
TreeSet类
-
红黑树结构
-
按照红黑树的原理去重写Collection的所有的抽象方法
-
对元素有两种排序方法:
-
1、让元素实现Comparable接口,重写compareTo方法
-
2、chuangjianTreeSet集合传递Comparator比较器,重写compare方法
-