以下内容为B站动力节点的JAVA基础课程2024全部内容,课程链接如下:https://www.bilibili.com/video/BV1Eb4y1P7iq,该笔记根据课程资料整理,顺序按照课程PPT截图整理,附有部分个人的问题和重点整理,如有侵权请联系下架,后续会持续更新整理课程中的重难点,课程中有很多重点和细节部分值得反复思考、消化,个人觉得是很不错的JAVA课程
第七章 集合
Collection的继承机构
泛型
迭代时删除元素
Iterator
是Java中的一个接口,它允许你遍历一个集合(Collection),如列表(List)、集合(Set)等,而不需要关心集合的底层实现。Iterator
提供了一种统一的方法来访问和操作集合中的元素。
以下是 Iterator
接口的一些关键点:
-
接口定义:
Iterator
接口定义了三个方法:hasNext()
,next()
, 和remove()
。 -
hasNext(): 此方法用来检测迭代器是否还有更多的元素可以迭代。
-
next(): 此方法返回迭代的下一个元素。
-
remove(): 此方法从集合中移除
next()
方法返回的最后一个元素。注意,remove()
操作必须在调用next()
方法之后和再次调用next()
或hasNext()
之前执行。 -
Fail-Fast 行为:
Iterator
接口的实现通常是“快速失败”的,这意味着如果集合在迭代过程中被修改(除了通过迭代器自身的remove()
方法),迭代器会立即抛出ConcurrentModificationException
。 -
使用场景: 当你需要遍历集合中的元素,并且不需要关心集合的具体类型时,使用
Iterator
是一个很好的选择。 -
与普通循环的区别: 使用
Iterator
可以避免使用索引来遍历集合,这使得代码更加简洁和安全。
示例代码:
import java.util.ArrayList;
import java.util.Iterator;
public class IteratorExample {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("Element 1");
list.add("Element 2");
list.add("Element 3");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
}
}
在这个例子中,我们创建了一个 ArrayList
并添加了一些元素。然后,我们使用 iterator()
方法获取了一个迭代器,并使用 hasNext()
和 next()
方法遍历了集合中的所有元素。
Iterator
接口是Java集合框架中非常重要的一部分,它提供了一种灵活且安全的方式来遍历集合中的元素。
List接口
ArrayList
Vector
链表存储结构
LinkedList双向链表
栈数据结构
队列数据结构
Map接口
Map继承结构
HashMap
手写HashMap基础代码
HashMap在Java8后的改进(包括Java8)
HashMap的容量及扩容
为什么说HashMap集合扩容成本较高呢?
因为length一定会发生改变!!
哈希值计算:
int index = hash % length 或 int index = hash & length - 1
为了提高程序的执行效率,建议减少HashMap集合的扩容次数
怎样减少HashMap集合的扩容次数呢?
在创建HashMap集合的时候给定初始化容量
给定一个初始化容量,能让其存储1000个节点,并且在存储过程中,不会发生扩容,应该怎样选
首先,1000个节点不该超过HashMap的75%,1000 / 75% = 1333.33333
其次应该满足是2 的次幂,由此可得,应为2048
LinkedHashMap
HashTable
Properties
二叉树与红黑树
二叉树
排序二叉树
平衡二叉树
红黑二叉树
TreeMap
集合中 能 / 不能 为NULL的总结
HashTable的key和value都不能为null
Properties的key和value都不能为null
TreeMap的key不能为null
TreeSet不能添加null
其余的都能为null
Collections工具类
第八章 IO流
IO流概述
IO流的体系结构
FileInputStream
FileOutputStream
FileReader
FileWriter
缓冲流
转换流
数据流
对象的序列化和反序列化
对象流
打印流
标准输入流和输出流
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
File类
读取属性配置文件
装饰器设计模式
压缩和解压缩流
数组流
字节数组流输入和输出的理解