File
Java 中的 File 类详解在 Java 中,File 类是用于与文件和目录进行交互的核心类。通过 File 类,你可以进行文件的创建、删除、重命名、路径获取等操作。File 类并不直接用于文件内容的读写,而是用来表示文件和目录的路径,它允许你对文件系统进行操作。 File 类位于 java.io 包下。 ✅ 1. File 类的基本构造函数File 类有多个构造方法,主要有以下几种: 1.1 使用文件路径创建 File 对象1File file = new File("path/to/file.txt"); 解释:通过指定文件的路径(可以是绝对路径或相对路径)来创建 File 对象。 1.2 使用文件路径和父目录创建 File 对象1File file = new File("path/to", "file.txt"); 解释:第一个参数是父目录路径,第二个参数是文件名。 1.3 使用 URI 创建 File 对象1File file = new File(new...
Map
Java Map 集合详解Map 是 Java 集合框架中的一个接口,它并不继承自 Collection,而是用于存储 键值对(Key-Value),其中每个键(Key)对应一个值(Value)。Map 是一个 无序 集合,不允许键重复,但值(Value)可以重复。 ✅ 1. Map 的特点 无序性:Map 的键值对没有固定的顺序,具体顺序由实现类决定。 键唯一性:Map 中的每个键都是唯一的。如果插入具有相同键的条目,后插入的值会替代之前的值。 值可重复:Map 中的值(Value)可以重复,但键(Key)不可重复。 ✅ 2. Map 的主要实现类 实现类 底层数据结构 特点 HashMap 哈希表(HashMap) 无序,查询、插入、删除时间复杂度 O(1) LinkedHashMap 哈希表 + 双向链表 有序(按插入顺序) TreeMap 红黑树(自平衡二叉树) 有序(按自然排序或比较器排序) Hashtable 哈希表 线程安全,性能较低(已废弃) ConcurrentHashMap 哈希表(线程安全) 线程安全,高性能 ✅ 3....
Stream
Java Stream 流详解Java 8 引入了 Stream API,它是一种 声明式 处理数据的方式,旨在简化集合类的操作。Stream 允许你以声明性方式处理集合、数组、I/O 通道等的数据流,支持并行处理,并能简洁地执行过滤、映射、排序等操作。 ✅ 1. 什么是 StreamStream 是一种 数据流,不是数据存储结构。它允许你以一种 函数式 的方式处理集合中的数据,通过流水线方式进行操作,支持 惰性计算(即只有在最终操作时才会执行)。Stream 操作通常分为两大类: 中间操作(Intermediate Operations):返回一个新的流,支持链式调用,操作是惰性求值的。 终止操作(Terminal Operations):触发流的计算,并产生一个结果(如聚合、输出等),一旦执行终止操作,流就不可再被使用。 ✅ 2. Stream 的常见创建方式Stream 可以通过以下几种方式创建: 2.1 从集合中创建 Stream12345678910111213import java.util.Arrays;import...
Set
Java Set 集合详解Set 是 Java 集合框架中的一个接口,继承自 Collection,它的特点是不允许存储重复元素,并且可以根据不同实现类选择是否保证元素的顺序。 ✅ 1. Set 的特点 不允许重复元素:如果向 Set 中添加一个已存在的元素,添加操作会被忽略。 无索引:不像 List,Set 不支持索引访问,只能通过迭代器或增强 for 循环遍历。 允许存储 null(但只能有一个 null)。 元素顺序不固定(具体顺序由实现类决定)。 ✅ 2. Set 的主要实现类 实现类 底层数据结构 特点 HashSet 哈希表(HashMap) 无序,增删查快(O(1)) LinkedHashSet 哈希表 + 双向链表 有序(按插入顺序) TreeSet 红黑树(自平衡二叉树) 有序(按自然排序或比较器排序) ✅ 3. Set 的常用方法Set 继承了 Collection 接口的方法,没有额外的方法,常见操作包括: 方法 作用 add(E e) 添加元素(如果存在则不添加) remove(Object...
List
Java List 集合详解List 是 Java 集合框架中的一个接口,继承自 Collection,允许存储重复元素,并且保持元素的插入顺序。它是有序的,并提供了基于索引的操作,可以随时访问、插入或删除元素。 ✅ 1. List 的特点 有序性:List 保证元素的存储顺序与插入顺序相同。 允许重复元素:List 允许多个元素具有相同的值。 索引访问:可以使用 get(int index) 通过索引访问元素。 支持 null 值:可以存储 null。 ✅ 2. List 的主要实现类 实现类 底层数据结构 特点 ArrayList 动态数组 读取快,增删慢(基于数组) LinkedList 双向链表 增删快,读取慢(基于链表) Vector 动态数组(线程安全) 线程安全,但性能较低 Stack 栈(继承 Vector) 先进后出(LIFO) ✅ 3. List 的常用方法List 继承了 Collection 的方法,并额外提供了一些基于索引的操作方法: 方法 作用 add(E e) 添加元素 add(int index,...
并发修改异常问题——三种遍历方式的区别
Java 并发修改异常(ConcurrentModificationException)问题详解在多线程环境中,并发修改异常(ConcurrentModificationException) 是一种常见的运行时异常,通常发生在我们在遍历集合时,集合的结构被同时修改。这个问题通常出现在使用 Iterator 或增强型 for 循环(foreach)时,集合在遍历的过程中被结构性修改(如添加、删除元素)。 ✅ 1. 什么是并发修改异常ConcurrentModificationException 是 Java 集合类中的一个异常,它表示在 遍历集合的同时修改 集合结构(例如添加、删除元素),而这种修改操作与遍历操作之间没有同步机制时,抛出的异常。 典型场景: 使用 Iterator 或增强型 for 循环遍历集合时,修改集合(例如 remove() 或 add())会导致并发修改异常。 ✅ 2. 引发 ConcurrentModificationException 的场景2.1 使用增强型 for...
Collection
Java Collection 常用功能详解在 Java 中,Collection 接口是所有集合类的根接口,主要用于存储和操作一组对象。它的常用功能包括添加、删除、遍历、排序、筛选等操作。 ✅ 1. Collection 的核心方法Collection 接口定义了一些通用方法,这些方法被 List、Set 等子接口继承。 方法 作用 add(E e) 添加元素 addAll(Collection<? extends E> c) 添加另一个集合的所有元素 remove(Object o) 删除指定元素 removeAll(Collection<?> c) 删除另一个集合中的所有元素 clear() 清空集合 contains(Object o) 检查集合是否包含某个元素 containsAll(Collection<?>...
LinkedList
在 Java 中,LinkedList 是 java.util 包中的一个类,实现了 List 接口和 Deque 接口。它是基于双向链表的数据结构,适合频繁插入和删除数据的场景。 ✅ 1. LinkedList 的特点 链表结构:每个节点包含数据和指向前后节点的引用。 插入和删除效率高:在链表中增加或删除元素的时间复杂度为 O(1)。 访问效率低:由于不是基于数组的结构,查找元素的时间复杂度为 O(n)。 双向链表:支持从头到尾和从尾到头的遍历。 ✅ 2. 创建 LinkedList123456789101112131415import java.util.LinkedList;public class Main { public static void main(String[] args) { // 创建一个存储字符串的 LinkedList LinkedList<String> list = new LinkedList<>(); // 添加元素 ...
ArrayList
在 Java 中,ArrayList 是 java.util 包中的一个类,用于存储动态数组。它提供了比普通数组更灵活的功能,可以自动调整大小。 ✅1. 创建 ArrayList123456789101112import java.util.ArrayList;import java.util.List;public class Main { public static void main(String[] args) { // 创建一个存储字符串的 ArrayList ArrayList<String> list1 = new ArrayList<>(); // 使用 List 接口引用 List<Integer> list2 = new ArrayList<>(); }} ArrayList 是实现类,List 是接口。 泛型 <E> 指定存储的数据类型。 如果没有指定类型:ArrayList...
String
在 Java 中,String 类是最常用的数据类型之一,它代表不可变的字符串。String 提供了丰富的 API,用于字符串操作,如查找、替换、截取、格式化等。 ✅ 1. 创建字符串Java 提供了多种方式来创建字符串: 1234String s1 = "Hello"; // 直接赋值(推荐)String s2 = new String("Hello"); // 通过构造方法(不推荐)char[] chars = {'H', 'e', 'l', 'l', 'o'};String s3 = new String(chars); // 通过字符数组创建 ✅ 2. 字符串基本操作(1)获取字符串长度123String str = "Hello, World!";int length = str.length();System.out.println(length); //...