Java学习日志
挑战接下来的100天里完成每天用一个小时复盘学习的Java内容 带着问题目的去学 而不是盲目看视频 要多写笔记 多问 并形成言简意赅的学习日志。
DAY1
学习内容 尚硅谷模块18 算法知识
1.collection 接口
理解为一个工具接口实现常用数据结构的调用
查 JAVA API的主要方法 add remove equals toArray
2.单列集合
与map双列集合相对应
列表
集合
-
HashSet(哈希表,完全无序) -
LinkedHashSet(链表 + 哈希表,插入顺序有序) -
TreeSet(红黑树,自然顺序或自定义排序)
队列
3.迭代器
iterator
hasnext next remove 实现遍历删除
4.学习建议
多动手 针对性 实际项目
5.哈希表
实现原理 单链表 + 数组 链地址法 ,开地址法
6.红黑树(先了解 重点学习)
尚硅谷视频(看到左旋转 具体代码实现后续再学习)
AVL 树中的一种实现 用于修改频繁场景
next avl树
7.泛型
class Box<T> {
private T item;
public void setItem(T item) {
this.item = item;
}
public T getItem() {
return item;
}
}
泛型类 泛型方法
类型安全 编译前检查 无需强转 代码复用
T只收引用类型如包装类 String
8.包装类
基本类型变成对象
int -> Integer
char -> Character
用于集合框架 调用对象方法 需要null
自动拆装箱 包装类方法 包装类不可变
9.List接口
-
ArrayList 动态数组 查多改少
-
LinkedList 双向链表 改多查少
-
Vector 线程安全
10.增强for
1.作用:
遍历集合或者数组
2.格式:
for(元素类型 变量名:要遍历的集合名或者数组名){
变量名就是代表的每一个元素
}
3.快捷键:集合名或者数组名.for
小结
模块18回顾:
1.Collection集合:单列集合的顶级接口
a.add addAll clear size isEmpty remove toArray contains
2.迭代器:Iterator
a.获取:iterator方法
b.方法:
hasNext()
next()
c.并发修改异常:在迭代集合的时候,不能随意修改集合长度
原因:调用add,只给实际操作次数+1.后面调用next的时候,没有给预期操作次数重新赋值,导致预期操作次数和实际操作次数不相等了
3.数据结构:
栈:先进后出
队列:先进先出
数组:查询快,增删慢
链表:查询慢,增删快
4.ArrayList
a.特点:
元素有序,有索引,元素可重复,线程不安全
b.数据结构:
数组
c.方法:
add(元素)直接在最后添加元素
add(索引,元素)在指定索引位置上添加元素
remove(元素)删除指定元素
remove(索引)按照指定索引删除元素
size()获取元素个数
get(索引)根据索引获取元素
set(索引,元素)将指定索引位置上的元素修改成我们指定的元素
d.利用无参构造创建集合对象,第一次add时,会创建一个长度为10的空数组
超出范围,自动扩容->Arrays.copyOf
扩容1.5倍
5.LinkedList
a.特点: 元素有序 有索引(java提供了按照索引操作元素的方法,并不代表本质上拥有索引),元素可重复,线程不安全
b.数据结构:双向链表
c.方法:有大量直接操作收尾元素的方法
6.增强for:
a.格式:
for(元素类型 变量名:集合名或者数组名){
变量就代表每一个元素
}
b.原理:
遍历集合时,原理为迭代器
遍历数组时,原理为普通for
模块19重点:
1.会Collections集合工具类的常用方法
2.会使用泛型
3.知道HashSet和LinkedHashSet的特点以及使用
4.知道HashSet将元素去重复的过程
11.

373

被折叠的 条评论
为什么被折叠?



