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




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



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

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集合的遍历方式
方式一:迭代器


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



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表达式

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


总结
1、集合中存储的是元素的什么信息?
 集合中存储的是元素对象的地址。
常见数据结构
数据结构概述、栈、队列



数组

链表

二叉树、二叉查找树




平衡二叉树





红黑树




总结

List系列集合
List集合特点、特有API

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集合的遍历方式小结

ArrayList集合的底层原理

LinkedList集合的底层原理

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);
}
}
集合的并发修改异常问题

泛型深入
泛型的概述和优势


自定义泛型类

 1、泛型类的核心思想;
 把出现泛型变量的地方全部替换成传输的真实数据类型
 2、泛型类的作用
 编译阶段约定操作的数据的类型,类似于集合的作用。
自定义泛型方法


自定义泛型接口

泛型通配符、上下限

                










