java.util
包是 Java 标准库中一个非常核心的包,提供了许多实用的类和接口,用于处理集合数据结构、日期时间、随机数、工具操作等。以下是对 java.util
包的完整介绍:
1. 集合框架 (Collections Framework)
集合框架是 java.util
包中最重要的部分,提供了多种数据结构和算法,用于存储、操作和处理数据。主要包含以下接口和类:
核心接口
-
Collection
: 所有集合类的根接口,定义了集合的基本操作,如添加、删除、包含等。Collection
接口没有直接实现,它的子接口List
、Set
和Queue
实现了具体的集合类型。 -
List
: 表示有序的集合,可以包含重复的元素。常用实现类有:ArrayList
: 基于动态数组实现的列表,支持快速随机访问,但在插入和删除操作上较慢。LinkedList
: 基于双向链表实现的列表,支持快速插入和删除,但在随机访问上较慢。
-
Set
: 表示不允许重复元素的集合。常用实现类有:HashSet
: 基于哈希表实现的集合,元素没有顺序,提供高效的查找、添加和删除操作。LinkedHashSet
: 继承自HashSet
,保持插入顺序。TreeSet
: 基于红黑树实现的集合,元素按照自然顺序或指定比较器排序。
-
Queue
: 表示先进先出的队列。常用实现类有:LinkedList
: 实现了Queue
接口,支持队列操作。PriorityQueue
: 基于优先级堆实现的队列,元素按照优先级顺序排序。
-
Map
: 用于存储键值对的集合。主要实现类有:HashMap
: 基于哈希表实现的映射,允许null
键和null
值,键值对没有顺序。LinkedHashMap
: 继承自HashMap
,保持插入顺序。TreeMap
: 基于红黑树实现的映射,键按照自然顺序或指定比较器排序。
辅助类
-
Collections
: 提供了对集合进行操作的静态方法,如排序、查找、同步等。常用方法包括sort()
,shuffle()
,reverse()
,synchronizedList()
等。 -
Arrays
: 提供了对数组进行操作的静态方法,如排序、搜索、转换等。常用方法包括sort()
,binarySearch()
,asList()
等。
2. 日期和时间处理
-
Date
: 表示一个特定的时间点,包含年月日时分秒等信息。Date
类设计不够灵活,已被新的日期时间 API 所取代。 -
Calendar
: 用于处理日期和时间,提供了对日期的各种操作,如加减日期、获取日期组件等。Calendar
是一个抽象类,有多个实现类,如GregorianCalendar
。 -
GregorianCalendar
:Calendar
的一个子类,表示公历的日期和时间,支持对日期进行各种操作。 -
TimeZone
: 表示时区,用于处理不同地区的时间。例如,TimeZone.getTimeZone("GMT")
可以获取格林威治标准时间的时区。
3. 并发工具
-
Timer
: 用于安排任务的执行,如定时任务和周期性任务。Timer
是一个老旧的类,现代 Java 推荐使用ScheduledExecutorService
替代。 -
TimerTask
: 表示一个可由Timer
执行的任务,用于定时执行代码。
4. 随机数生成
Random
: 提供伪随机数生成器,可以生成各种类型的随机数,包括整数、浮点数、布尔值等。例如,new Random().nextInt(100)
可以生成 0 到 99 的随机整数。
5. 其他实用类
-
Properties
: 扩展自Hashtable
,用于存储和操作键值对的集合,通常用于读取和写入配置文件。例如,Properties
可以从.properties
文件中加载配置信息。 -
StringTokenizer
: 用于分割字符串,旧版的字符串分割工具,现代 Java 推荐使用String.split()
方法。 -
UUID
: 提供生成唯一标识符的功能,常用于生成唯一的 ID。
示例代码
使用 ArrayList
和 HashMap
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class UtilExample {
public static void main(String[] args) {
// 使用 ArrayList
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
System.out.println("List: " + list);
// 使用 HashMap
Map<String, Integer> map = new HashMap<>();
map.put("Alice", 30);
map.put("Bob", 25);
map.put("Charlie", 35);
System.out.println("Map: " + map);
}
}
使用 Collections
类
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CollectionsExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Banana");
list.add("Apple");
list.add("Cherry");
// 排序
Collections.sort(list);
System.out.println("Sorted List: " + list);
// 打乱顺序
Collections.shuffle(list);
System.out.println("Shuffled List: " + list);
}
}
使用 Random
类
import java.util.Random;
public class RandomExample {
public static void main(String[] args) {
Random random = new Random();
int randomInt = random.nextInt(100); // 生成 0 到 99 的随机整数
double randomDouble = random.nextDouble(); // 生成 0.0 到 1.0 的随机浮点数
boolean randomBoolean = random.nextBoolean(); // 生成随机布尔值
System.out.println("Random Integer: " + randomInt);
System.out.println("Random Double: " + randomDouble);
System.out.println("Random Boolean: " + randomBoolean);
}
}
总结
java.util
包在 Java 编程中扮演了重要角色,提供了丰富的功能和灵活的工具,涵盖了集合框架、日期时间处理、并发工具、随机数生成等多个方面。掌握这些类和接口的使用,可以大大提高 Java 编程的效率和质量。