Java核心API详解:集合、泛型与实用类

需积分: 9 2 下载量 130 浏览量 更新于2024-07-18 1 收藏 1.71MB DOCX 举报
"这篇个人笔记主要涵盖了Java核心API中的关键概念,包括集合框架、泛型以及实用类的深入讲解。作者分享了对这些主题的理解,并欢迎读者提出意见和指正。" 1. 集合框架: 集合框架是Java中用于存储和操作对象的重要工具。它包括各种接口和类,如Collection、List、Set和Map。集合不同于数组,因为它可以动态调整大小,且提供了更丰富的操作。 1.1. 什么是集合: 集合是一种存储多个对象的容器,允许进行各种操作,如添加、删除和查找元素。 1.2. 集合和数组: 数组是固定大小的,而集合可以根据需要动态扩展。集合提供了更多的功能,如排序、遍历等。 1.3. Java集合类: Java集合类包括ArrayList、LinkedList、HashSet、HashMap等,它们实现了不同的接口,如Collection、List、Set和Map。 1.4. Collection接口: Collection是最基本的集合接口,所有单值集合都继承自它。它定义了添加、删除和检查元素的基本操作。 1.4.1. 常用Collection接口的共性方法: 例如add(), remove(), isEmpty(), size()等。 1.5. List接口: List是有序的集合,允许有重复元素。ArrayList和LinkedList是List的实现。 1.5.1. List接口特有方法: 如get(), set(), addIndex(), removeIndex()等。 1.5.2. List接口的实现类: ArrayList提供随机访问,适合频繁查找;LinkedList适合频繁插入和删除。 1.6. Set接口: Set不允许有重复元素,它遵循唯一性。 1.6.1. Set的唯一校验: 添加元素时会检查是否已存在。 1.6.2. Set接口的实现类: HashSet是最常用的实现,而TreeSet按元素排序。 1.7. 迭代器: 用于遍历集合的接口,提供了hasNext()和next()等方法。 1.8.1. Iterable: 所有可迭代的集合都实现了Iterable接口,使得可以使用for-each循环。 1.8.2. Iterator的方法: 如hasNext(), next(), remove()。 1.8.3. List特有的迭代器ListIterator: 提供了向前和向后遍历,以及添加元素的能力。 1.9. Map接口: 用于存储键值对,键是唯一的。 1.9.1. Map与Collection: Map不是Collection的子接口,但提供了values()和keySet()来获取值的集合和键的集合。 1.9.2. 常用方法: put(), get(), remove(), containsKey(), containsValue()等。 1.10. 使用Collections操作集合: Collections提供了许多静态方法,用于操作集合,如排序、查找、填充等。 2. 泛型: 泛型是Java中的一种类型系统,用于增强类型安全性和代码可读性。 2.1. 什么是泛型: 泛型允许在类、接口和方法中使用类型参数,限制了可以存储的数据类型。 2.2. 泛型集合: 如ArrayList<T>,T是类型参数,确保集合只能存储特定类型的对象。 2.3. 泛型类: 自定义类可以声明类型参数,如MyClass<T>,T代表任意类型。 2.3.1. 泛型类的默认类型: 未指定类型参数时,通常默认为Object。 2.3.2. 泛型类细节: 包括类型参数的边界、类型擦除等。 2.4. 泛型方法: 方法也可以声明类型参数,如 `<T> void print(T t)`。 2.5. 泛型接口: 接口可以声明类型参数,实现类需要提供具体类型。 2.6. 泛型通配符: 如"? extends T"(上限通配符)和"? super T"(下限通配符),用于放宽类型约束。 2.7. 泛型限定: 限定泛型可以指定类型参数的边界,如"E extends Number"或"E super Integer"。 3. 实用类: Java提供了一些实用类,简化了常见的编程任务。 3.1. 枚举: 枚举类型是预定义一组常量的类,如DayOfWeek {MONDAY, TUESDAY, ...}。 3.2. 包装类: 为每个基本类型提供了对应的引用类型,如Integer、Double等。 3.2.1. 包装类的特点: 自动装箱和拆箱、提供额外方法。 3.2.2. 包装类的作用: 在需要引用类型的地方使用基本类型。 3.2.3. 包装类和基本类型: 转换关系,如int -> Integer,Integer -> int。 3.2.4. 包装类的构造方法: 如new Integer(int value)。 3.2.5. 包装类的常用方法: 如parseInt(), toString()等。 3.2.6. 装箱和拆箱: 将基本类型转换为包装类,反之亦然。 3.3. Math类: 提供数学运算,如sqrt(), pow(), random()等。 3.4. Random类: 生成随机数,如nextInt(), nextDouble()。 3.4.1. 构造方法: Random()创建新的随机数生成器。 3.4.2. 常用方法: nextInt(int bound), nextDouble()等。 3.5. String类: 不可变的字符序列,提供了字符串操作。 3.6. StringBuffer类: 线程安全的字符串操作类,适用于大量拼接操作。 3.6.1. 常用方法: append(), insert(), delete(), replace()等。 3.6.2. String、StringBuffer和StringBuilder: String是不可变的,而StringBuffer和StringBuilder在多线程环境下性能更好。 3.7. 操作日期时间: Java提供了处理日期和时间的类,如Date和SimpleDateFormat。 3.7.1. java.util.Date类: 表示日期和时间,可进行日期操作。 3.7.2. java.text.SimpleDateFormat类: 用于日期和时间的格式化和解析。 笔记中还涉及了其他日期时间类,如Calendar和LocalDateTime,以及如何进行日期和时间的计算和格式化。这些内容构成了Java API的基础,对于理解和使用Java编程至关重要。通过深入学习这些知识点,开发者可以编写更加高效、安全和可维护的代码。