目录

  • ​​集合概述​​
  • ​​总结​​
  • ​​Collection集合的体系特点​​
  • ​​总结​​
  • ​​Collection集合常用API​​
  • ​​Collection集合的遍历方式​​
  • ​​方式一:迭代器​​
  • ​​总结​​
  • ​​方式二:foreach/增强for循环​​
  • ​​方式三:lambda表达式​​
  • ​​Collection集合存储自定义类型的对象​​
  • ​​总结​​
  • ​​常见数据结构​​
  • ​​数据结构概述、栈、队列​​
  • ​​数组​​
  • ​​链表​​
  • ​​二叉树、二叉查找树​​
  • ​​平衡二叉树​​
  • ​​红黑树​​
  • ​​总结​​
  • ​​List系列集合​​
  • ​​List集合特点、特有API​​
  • ​​总结​​
  • ​​List集合的遍历方式小结​​
  • ​​ArrayList集合的底层原理​​
  • ​​LinkedList集合的底层原理​​
  • ​​集合的并发修改异常问题​​
  • ​​泛型深入​​
  • ​​泛型的概述和优势​​
  • ​​自定义泛型类​​
  • ​​自定义泛型方法​​
  • ​​自定义泛型接口​​
  • ​​泛型通配符、上下限​​

集合概述

Java之collection集合、常见数据结构、List和泛型_list


Java之collection集合、常见数据结构、List和泛型_list_02


Java之collection集合、常见数据结构、List和泛型_System_03


Java之collection集合、常见数据结构、List和泛型_java_04

总结

1、数组和集合的元素存储的个数问题。
数组定义后类型确定,长度固定
集合类型可以不固定,大小是可变的。
2、数组和集合存储元素的类型问题。
数组可以存储基本类型和引用类型的数据。
集合只能存储引用数据类型的数据。
3、数组和集合适合的场景
数组适合做数据个数和类型确定的场景。
集合适合做数据个数不确定,且要做增删元素的场景。

Collection集合的体系特点

Java之collection集合、常见数据结构、List和泛型_数据结构_05


Java之collection集合、常见数据结构、List和泛型_List_06


Java之collection集合、常见数据结构、List和泛型_数据结构_07

总结

1、集合的代表是?
Collection接口。
2、Collection集合分了哪2大常用的集合体系?
List系列集合:添加的元素是有序、可重复、有索引。
Set系列集合:添加的元素是无序、不重复、无索引。
3、如何约定集合存储数据的类型,需要注意什么?
集合支持泛型。
集合和泛型不支持基本类型,只支持引用数据类型。

Collection集合常用API

Java之collection集合、常见数据结构、List和泛型_数据结构_08

package com.zixin.d1_collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

public class CollectionDemo1 {
public static void main(String[] args) {
Collection<String> list = new ArrayList<>();

list.add("java");
list.add("java");
list.add("HTML");
System.out.println(list);

// list.clear();
// System.out.println(list);
System.out.println(list.size());

System.out.println(list.contains("java"));

list.remove("java");
System.out.println(list);

Object [] arrs = list.toArray();
System.out.println("数组:"+ Arrays.toString(arrs));


}
}

Collection集合的遍历方式

方式一:迭代器

Java之collection集合、常见数据结构、List和泛型_list_09


Java之collection集合、常见数据结构、List和泛型_数据结构_10

总结

1、迭代器的默认位置在哪里。
lterator iterator():得到迭代器对象,默认指向当前集合的索引0
2、迭代器如果取元素越界会出现什么问题。
会出现NoSuchElementException异常。

方式二:foreach/增强for循环

Java之collection集合、常见数据结构、List和泛型_java_11


Java之collection集合、常见数据结构、List和泛型_System_12

Java之collection集合、常见数据结构、List和泛型_数据结构_13

package com.zixin.d3_collection_traversal;

import java.util.ArrayList;
import java.util.Collection;

public class CollectionDemo02 {
public static void main(String[] args) {
Collection<String> lists = new ArrayList<>();
lists.add("赵敏");
lists.add("小昭");
lists.add("素素");
lists.add("灭绝");

System.out.println(lists);

for(String ele : lists){
System.out.println(ele);
}
}
}

方式三:lambda表达式

Java之collection集合、常见数据结构、List和泛型_java_14

Collection集合存储自定义类型的对象

Java之collection集合、常见数据结构、List和泛型_list_15


Java之collection集合、常见数据结构、List和泛型_List_16

总结

1、集合中存储的是元素的什么信息?
集合中存储的是元素对象的地址。

常见数据结构

数据结构概述、栈、队列

Java之collection集合、常见数据结构、List和泛型_数据结构_17


Java之collection集合、常见数据结构、List和泛型_list_18


Java之collection集合、常见数据结构、List和泛型_java_19

数组

Java之collection集合、常见数据结构、List和泛型_java_20

链表

Java之collection集合、常见数据结构、List和泛型_List_21

二叉树、二叉查找树

Java之collection集合、常见数据结构、List和泛型_数据结构_22


Java之collection集合、常见数据结构、List和泛型_list_23


Java之collection集合、常见数据结构、List和泛型_list_24


Java之collection集合、常见数据结构、List和泛型_List_25

平衡二叉树

Java之collection集合、常见数据结构、List和泛型_list_26


Java之collection集合、常见数据结构、List和泛型_数据结构_27


Java之collection集合、常见数据结构、List和泛型_数据结构_28


Java之collection集合、常见数据结构、List和泛型_数据结构_29


Java之collection集合、常见数据结构、List和泛型_List_30

红黑树

Java之collection集合、常见数据结构、List和泛型_java_31


Java之collection集合、常见数据结构、List和泛型_System_32


Java之collection集合、常见数据结构、List和泛型_list_33


Java之collection集合、常见数据结构、List和泛型_数据结构_34

总结

Java之collection集合、常见数据结构、List和泛型_List_35

List系列集合

List集合特点、特有API

Java之collection集合、常见数据结构、List和泛型_数据结构_36

package com.zixin.d5_collection_list;

import java.util.ArrayList;
import java.util.List;

public class ListDemo01 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Java");
list.add("MySQL");
list.add("MySQL");

list.add(2,"HTML");
System.out.println(list);

System.out.println(list.remove(2));
System.out.println(list);

System.out.println(list.get(2));

System.out.println(list.set(1,"高斯林"));
System.out.println(list);
}
}

总结

1、List系列集合特点
ArrayList、LinekdList :有序,可重复,有索引
2、List的实现类的底层原理
ArrayList底层是基于数组实现的,根据查询元素快,增删相对慢。LinkedList底层基于双链表实现的,查询元素慢,
增删首尾元素是非常快的。

List集合的遍历方式小结

Java之collection集合、常见数据结构、List和泛型_list_37

ArrayList集合的底层原理

Java之collection集合、常见数据结构、List和泛型_List_38

LinkedList集合的底层原理

Java之collection集合、常见数据结构、List和泛型_System_39

package com.zixin.d5_collection_list;

import java.util.LinkedList;

public class ListDemo03 {
public static void main(String[] args) {
LinkedList<String> stack = new LinkedList<>();
stack.push("第一颗子弹");
stack.addFirst(("第二课子弹"));
stack.addFirst("第三课子弹");
stack.addFirst("第四课子弹");

System.out.println(stack);

System.out.println(stack.pop());
System.out.println(stack);

LinkedList<String> queue = new LinkedList<>();
queue.addLast("1号");
queue.addLast("2号");
queue.addLast("3号");
queue.addLast("4号");
System.out.println(queue);

System.out.println(queue.removeFirst());
System.out.println(queue);
}
}

集合的并发修改异常问题

Java之collection集合、常见数据结构、List和泛型_System_40

泛型深入

泛型的概述和优势

Java之collection集合、常见数据结构、List和泛型_java_41


Java之collection集合、常见数据结构、List和泛型_List_42

自定义泛型类

Java之collection集合、常见数据结构、List和泛型_java_43


1、泛型类的核心思想;

把出现泛型变量的地方全部替换成传输的真实数据类型

2、泛型类的作用

编译阶段约定操作的数据的类型,类似于集合的作用。

自定义泛型方法

Java之collection集合、常见数据结构、List和泛型_list_44


Java之collection集合、常见数据结构、List和泛型_list_45

自定义泛型接口

Java之collection集合、常见数据结构、List和泛型_数据结构_46

泛型通配符、上下限

Java之collection集合、常见数据结构、List和泛型_List_47