集合的体系结构

344 阅读2分钟

1.Collection

image.png

1.Collection集合体系和特点

image.png

2.为什么要先学Collection的常用方法?

image.png

3.常用方法有哪些

image.png

4.Collection的遍历方式

4.1 迭代器

image.png 创建迭代器对象:Iterator< E > 对象名称=创建的集合对象.iterator() 代码如下:


ArrayList<Integer>arrayList=new ArrayList<>(); //创建集合对象

//向集合中添加数据
arrayList.add(30);
arrayList.add(40);
arrayList.add(50);

Iterator<Integer> iterator01=arrayList.iterator();//创建迭代器对象
//利用迭代器对象循环打印输出集合中的元素数据
while (iterator01.hasNext()){
    System.out.println(iterator01.next());
}

4.2 增强for

image.png

ArrayList<Integer>arrayList=new ArrayList<>(); //创建集合对象
//向集合中添加元素
arrayList.add(30);
arrayList.add(40);
arrayList.add(50);
//利用增强for循环打印输出集合中的元素
for (Integer integer : arrayList) {
    System.out.println(integer);
}

4.3 lambda表达式

5.集合存储对象的原理

image.png

6.List集合的遍历方式和特有方法

6.1 List集合的特有方法

image.png

6.2 List集合支持的遍历方式

image.png

7.List

image.png

7.1ArrayList

7.1.1 ArrayList的优缺点

image.png

7.1.2 ArrayList的底层原理

image.png

7.1.3 ArrayList的应用场景

image.png

7.2LinkList

7.2.1 前置知识 什么是链表? 链表的特点?

image.png

7.2.2 LinkList的底层原理

image.png

7.2.3 LinkList集合新增的首尾操作的方法

image.png

7.2.4 LinkList应用场景之一队列

image.png 代码实现如下

package com.java01.test;

import java.util.LinkedList;

public class demo01 {
    public static void main(String[] args) {
        //1.创建一个队列
        LinkedList<String> queue=new LinkedList<>();
        //入队操作
        queue.addLast("第一号人");
        queue.addLast("第二号人");
        queue.addLast("第三号人");
        queue.addLast("第四号人");
        System.out.println(queue);
        //出队操作
        System.out.println(queue.removeFirst());
        System.out.println(queue.removeFirst());
        System.out.println(queue.removeFirst());
        //展示队列中的人数
        System.out.println(queue);

    }
}
7.2.5 LinkList应用场景之一栈

image.png

代码实现如下

image.png 其中添加元素可以使用push,出栈使用pop

8.Set集合

image.png

8.1 哈希值以及对象哈希值的特点

8.1.1 什么是哈希值

image.png

8.1.2 对象哈希值的特点

image.png

image.png

8.2HashSet底层原理的实现

image.png

8.3 JDK8之前HashSet集合底层原理 基于哈希表:数组+链表

image.png

8.4 JDK8开始HashSet集合底层原理 基于哈希表:数组+链表+红黑树

image.png

8.5 了解一下数据结构中的树

8.5.1 二叉树,二叉排序树

image.png

8.5.2二叉树存在的问题

image.png

8.5.3 平衡二叉树

image.png

8.5.4 红黑树

image.png

8.6 HashSet小结提问

image.png

8.7 深入理解HashSet去重机制

image.png 图解如下

image.png

8.8HashSet的子类-->LinkHashSet的底层原理

image.png

8.9 TreeSet

8.9.1 TreeSet的特点和注意事项

image.png

8.9.2 TreeSet自定义排序规则

image.png 代码实现如下:
方式一:类实现Comparable接口,重写CompareTo方法来指定比较规则

image.png 方式二:通过TreeSet的有参构造器,利用内部类设置的比较器对象

image.png

8.9.3 两种自定义排序方式中关于返回值的规则

image.png

9.Collection集合体系小结

9.1面对不同的情况,如何选择合适的集合?

image.png

10.集合的并发修改异常

image.png 代码展示如下:

image.png 使用增强for和foreach无法解决集合的并发修改异常操作 image.png

11.Collection的相关知识

11.1可变参数

image.png 代码展示如下

image.png

11.2 Collections

11.2.1 Collections的常用静态方法

image.png

11.2.2 Collections的两种排序方式

image.png 排序方式1:

image.png 排序方式2:

image.png

2.Map集合

1.认识map集合

image.png

2.Map集合体系

image.png

3.为什么要先学Map的常用方法

image.png

4.Map的常用方法

image.png 代码实现

image.png

image.png

image.png

5.Map的三种遍历方式

image.png

5.1 遍历方式一:

image.png

5.2遍历方式二:

image.png 代码实现如下

image.png

5.3通过Lamdba表达式

image.png 代码实现如下

image.png

6.HashMap底层原理

image.png

image.png

7. HashMap子类-LinkHashMap原理

image.png

8.TreeMap特点原理即两种方式的排序规则

8.1TreeMap的特点原理

image.png

8.2TreeMap的指定排序规则

image.png

9.Map集合小案例

image.png 代码实现

image.png

3.流的使用

1.什么是流

image.png 代码实现

image.png

2.流的使用步骤

image.png

3.Stream流的常用方法

image.png

4.获取Stream流

image.png 代码实现

image.png

image.png

image.png

5.Stream流常见的中间方法

image.png

代码实现

image.png

image.png

image.png

image.png

6.Stream流常见的终结方法

image.png

image.png 代码实现

image.png

image.png

image.png

7.Collections工具提供了具体的收集方式

image.png