文章目录
- 1 容器/集合简介
- 2 容器的结构
- 2.1 结构图
- 2.1.1 单例集合
- 2.1.2 双例集合
- 3 单例集合的使用
- 3.1 Collection接口的介绍
- 3.2 Collection接口中的接口方法
- 3.3 List接口
- 3.3.1 List接口特点
- 3.3.2List的常用方法
- 3.4 ArrayList容器类
- 3.4.1 添加元素
- 3.4.2 获取元素
- 3.4.3 根据索引删除元素/删除指定元素
- 3.4.4 替换元素
- 3.4.5 清空/判空容器
- 3.4.6 判断容器中是否包含指定元素
- 3.4.7 查找第一次/最后一次元素的位置
- 3.4.8 将单例集合转换为Object/泛型数组
- 3.4.9 并集操作
- 3.4.10 交集操作
- 3.4.11 差集操作
1 容器/集合简介
- 程序中的“容器”,用来容纳和管理数据。
- 我们在之前所学习的数组就是一种容器,可以在其中放置对象或基本数据类型数据。数组的优势:一种简单的线性序列,可以快速访问数组元素,效率高。从效率和类型检查角度来讲,数组是最好的。劣势:不灵活。容量需要事先定义好,不能根据需求的变化而变化。
- 由于数组并不能满足我们对“管理和组织数据的需求”,所以我们需要一种更强大、更灵活、容量可以随时变化的容器来装载对象。
2 容器的结构
2.1 结构图
2.1.1 单例集合
2.1.2 双例集合
- 双例集合:基于key和value的结构存储数据。
3 单例集合的使用
3.1 Collection接口的介绍
- Collection是单例集合跟接口,它是集中收集的意思。 Collection接口的2个子接口是List和Set接口。
3.2 Collection接口中的接口方法
方法 | 说明 |
---|---|
boolean add(Object element) | 增加元素到容器中 |
booleanremove(Object element) | 从容器中移除元素 |
boolean contains(Object element) | 容器中是否包含该元素 |
int size() | 容器中元素的数量 |
boolean isEmpty() | 容器是否为空 |
void clear() | 清空容器中所有元素 |
iterator iterator() | 获得送代器,用于遍历所有元素 |
boolean containsAll(Collection c) | 本容器是否包含C容器中的所有元素 |
boolean addAlI(Collectiond c) | 将容器C中所有元素增加到本容器 |
boolean removeAll(Collection c) | 移除本容器和容器c中都包含的元素 |
boolean retainAll(Collection c) | 取本容器和容器C中都包含的元素,移除非交集元素 |
Object[] toArray0 | 转化成Object数组 |
removeIf 【jdk1.8之后】 | 作用是删除容器中所有满足filter指定条件的元素。 |
stream parallelstream | stream和parallelstream分别返回该容器的Stream视图表示,不同之处在于parallelstream()返回并行的Stream。Stream是Java函数式编程的核心类。 |
spliterator | 可分割的送代器不同以往的iterator需要顺序送代,Spliterator可以分割为若千个小的选代器进行并行操作,可以实现多线程操作提高效率 |
- 由于List、Set是Collection的子接口,意味着所有List、Set的实现类都有上面的方法。
3.3 List接口
3.3.1 List接口特点
- 有序:有序(元素存入集合的顺序和取出的顺序一致)。List中每个元素都有索引标记。可以根据元素的索引标记(在List中的位置)访问元素,从而精确控制这些元素。
- 可重复:List允许加入重复的元素。更确切地讲,List通常允许满足e1.equals(e2)的元素重复加入容器
3.3.2List的常用方法
方法 | 说明 |
---|---|
void add(int index.Object element) | 在指定位置插入元素,以前元素全部后移一位 |
Object set(int index,Object element) | 修改指定位置的元索 |
Object get(intindex) | 返回指定位置的元系 |
Object remove(intindex) | 删除指定位置的元素,后面元系全部前移一位 |
int indexOf(Object o) | 返回第一个匹配元素的索引,如果没有该元素返回-1 |
int lastindexOf(Object o) | 返回最后一个匹配元素的索引,如果没有该元素,返回-1 |
3.4 ArrayList容器类
- ArrayList是List接口的实现类,是List存储特征的具体实现
- ArrayList底层使用数组实现的存储。特点:查询效率高、增删效率低、线程不安全。
3.4.1 添加元素
/**
* @author 缘友一世
* date 2022/11/17-22:29
*/
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list.add("小倩"));
System.out.println(list.add("小灵"));
list.add(1,"小静");
System.out.println("添加完成");
System.out.println(list.toString());
}
}
3.4.2 获取元素
/**
* @author 缘友一世
* date 2022/11/17-22:29
*/
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list.add("小倩"));
System.out.println(list.add("小灵"));
list.add(1,"小静");
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));
for (int i=0;i<list.size();i++) {
System.out.print(list.get(i)+" ");
}
}
}
3.4.3 根据索引删除元素/删除指定元素
/**
* @author 缘友一世
* date 2022/11/17-22:29
*/
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list.add("小倩"));
System.out.println(list.add("小灵"));
list.add(1,"小静");
list.remove(2);
list.remove("小静");
for (int i=0;i<list.size();i++) {
System.out.print(list.get(i)+" ");
}
}
}
3.4.4 替换元素
/**
* @author 缘友一世
* date 2022/11/17-22:29
*/
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list.add("小倩"));
System.out.println(list.add("小灵"));
list.add(1,"小静");
System.out.println(list.set(2,"小月"));
for (int i=0;i<list.size();i++) {
System.out.print(list.get(i)+" ");
}
}
}
3.4.5 清空/判空容器
/**
* @author 缘友一世
* date 2022/11/17-22:29
*/
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list.add("小倩"));
System.out.println(list.add("小灵"));
list.add(1,"小静");
list.clear();
System.out.println(list.isEmpty());
}
}
3.4.6 判断容器中是否包含指定元素
/**
* @author 缘友一世
* date 2022/11/17-22:29
*/
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list.add("小倩"));
System.out.println(list.add("小灵"));
list.add(1,"小静");
System.out.println(list.contains("小狐"));
}
}
3.4.7 查找第一次/最后一次元素的位置
/**
* @author 缘友一世
* date 2022/11/17-22:29
*/
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list.add("小倩"));
System.out.println(list.add("小灵"));
list.add(1,"小静");
System.out.println(list.add("小灵"));
for (int i=0;i<list.size();i++) {
System.out.print(list.get(i)+" ");
}
System.out.println();
System.out.println(list.indexOf("小灵"));
System.out.println(list.lastIndexOf("小灵"));
}
}
3.4.8 将单例集合转换为Object/泛型数组
/**
* @author 缘友一世
* date 2022/11/17-22:29
*/
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list.add("小倩"));
System.out.println(list.add("小灵"));
list.add(1,"小静");
//将ArrayList转化为Object[]
//不能在转化的方法调用时进行强制类型转换。
Object[] arr = list.toArray();
for(int i=0;i<arr.length;i++) {
String str=(String) arr[i];
System.out.print(str+" ");
}
System.out.println();
//指定类型转换
String[] array = list.toArray(new String[list.size()]);
for (String s:array) {
System.out.print(s+" ");
}
}
}
3.4.9 并集操作
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("小倩");
list.add("小灵");
ArrayList<String> list1 = new ArrayList<>();
list1.add("小静");
list1.add("小晶");
System.out.println(list.addAll(list1));
}
}
3.4.10 交集操作
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("小倩");
list.add("小灵");
ArrayList<String> list1 = new ArrayList<>();
list1.add("小静");
list1.add("小晶");
list1.add("小倩");
System.out.println(list.retainAll(list1));
for (int i=0;i<list.size();i++) {
System.out.print(list.get(i)+" ");
}
}
}
3.4.11 差集操作
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("小倩");
list.add("小灵");
ArrayList<String> list1 = new ArrayList<>();
list1.add("小静");
list1.add("小晶");
list1.add("小倩");
System.out.println(list.removeAll(list1));
for (int i=0;i<list.size();i++) {
System.out.print(list.get(i)+" ");
}
}
}