Java 简明教程
Java.util Package Tutorial
Java - java.util Package
java.util 包是 Java SDK 的标准包。它包含集合框架、旧集合类、事件模型、日期和时间设施、国际化以及其他实用类。此包非常有用,因为它提供了 ArrayList、HashMap、Set 等常用集合。Java.util 提供 StrinTokenizer 类用于字符串操作,同样,其他实用类用于事件模型处理、日期和时间操作等等。此参考将引导您了解 java.util 包中可用且实用的方法。
Importing java.util Package
作为 Java 的内置包,我们无需下载任何 java.util 包的外部库,并且可以使用以下语法导入其所有类:
import java.util.*;
这里我们用 * 运算符从 java.util 包导入所有类,现在任何类都可以在程序中使用。对于特定类,例如 ArrayList,我们可以使用以下语法导入类:
import java.util.ArrayList;
Why java.util Package is used in Java Programs
Java.util 包类包含实用类,如集合框架、字符串操作实用程序、日期和时间操作实用程序。以下列出了 java.util 包的类类别。
-
Collections − ArrayList、HashMap、Dictionary 是 java.util 包中大量集合类中的一部分。这些类提供了对大数据集的常用操作。
-
Date Time Operations − GregorianCalendar、Timeone 是 java.util 包中的一些实用类。这些类提供了对日期和时间的常用操作。
-
String Manipulations − StringTokenizer 是 java.util 包中提供的重要实用类。此类提供了大量操作来操作字符串。
-
Enumerations − java.util 包的 Enumeration 类提供对值的集合的操作,如迭代、比较等。
-
Exceptions − java.util 包包含各种常见的异常,如 ConcurrentModificationException、InputMismatchException 等。
Important classes in java.util Package
以下是 java.util.package 中重要类的列表:
-
ArrayDeque − 此类提供可调整大小的数组并实现 Deque 接口。此类及其迭代器实现集合和迭代器接口的所有可选方法。
-
ArrayList − 此类提供可调整大小的数组并实现 List 接口。ArrayList 类扩展 AbstractList 并实现 List 接口。ArrayList 支持可以根据需要增长的动态数组。
-
Arrays − 此类包含一个允许将数组视为列表的静态工厂。ArrayList 类包含用于操作数组的各种方法(如排序和搜索)。
-
BitSet − 此类创建一个包含位值的特殊类型的数组。BitSet 数组可以根据需要增加大小。这使其类似于位向量。这是一个旧类,但在 Java 2、版本 1.4 中已完全重新设计。Java BitSet 类实现了一个会根据需要增长的位向量。
-
Calendar − 此类是一个抽象类,它提供用于在特定时间瞬间和一组日历字段(例如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等)之间进行转换的方法,以及用于操作日历字段(例如获取下一周的日期)的方法。
-
Collections − 此类仅包含对集合进行操作或返回集合的静态方法。
-
Currency - 此类表示一种货币。Currency 类被设计用于任何给定货币最多只有一个 Currency 实例,这就是没有公共构造函数的原因。
-
Date - 此类表示时间中的特定时刻,具有毫秒精度。
-
Dictionary - 此类是任何类的抽象父类,例如映射键到值的 Hashtable。
-
EnumMap - 此类是用于使用枚举键的专门 Map 实现。枚举映射中的所有键都必须来自单个枚举类型,该类型在创建映射时明确或隐式指定。
-
EnumSet - 此类是用于使用枚举键的专门 Set 实现。枚举集中的所有键都必须来自创建该集时明确或隐式指定的单个枚举类型。
-
Formatter - 此类支持布局对齐和调整,数字、字符串和日期/时间数据的常用格式以及特定于语言环境的输出。
-
GregorianCalendar - 此类是 Calendar 的具体子类,并提供世界上大多数人使用的标准日历系统。它是一个混合日历,支持儒略历和格里历系统,支持一个单一的间断,该间断在默认情况下对应于格里历实施时的格里历日期。
-
HashMap - 此类是基于散列表实现的 Map 接口。
-
HashSet - 此类基于散列表实现 Set 接口。
-
HashTable - 此类实现散列表,它将键映射到值。
-
IdentityHashMap - 此类使用散列表实现 Map 接口,在比较键(和值)时使用引用相等性来代替对象相等性。
-
LinkedHashMap - 此类是 Map 接口的散列表和链表实现,具有可预测的迭代顺序。
-
LinkedHashSet - 此类是 Set 接口的散列表和链表实现,具有可预测的迭代顺序。
-
LinkedList -此类对我们为双向链表执行的操作能够取得预期的效果。索引到列表中的操作将从列表的开头或结尾遍历该列表,以哪种遍历方式更接近指定索引为准。
-
ListResourceBundle - 此类是 ResourceBundle 的抽象子类,可在一个方便且易于使用的列表中管理语言环境的资源。
-
Locale - 此类对象表示特定的地理、政治或文化区域。
-
Observable - 此类表示可观察对象,或模型-视图范例中的“数据”。可以对该类进行子类化,以表示应用程序希望观察的对象。
-
PriorityQueue - 此类是一个基于优先级堆的无界优先级队列。根据优先级队列的自然顺序或在构造队列时提供的比较器对优先级队列的元素进行排序,具体取决于使用哪个构造函数。
-
Properties - 此类是一个类,表示一组持久属性。可以将属性保存到流中或从流中加载属性。
-
PropertyPermission − 此类为属性权限类。
-
PropertyResourceBundle − 此类是 ResourceBundle 的具体子类,它使用属性文件中的静态字符串集来管理区域设置的资源。
-
Random − 此类实例用于生成伪随机数的流。此类使用 48 位种子,使用线性同余公式加以修改。
-
ResourceBundle − 此类包含特定于区域设置的对象。有了此类,可以编写能够轻松本地化或翻译成不同语言的程序。
-
ResourceBundle.Control − 此类与加载资源包的工厂方法协同工作。
-
Scanner − 此类是一个简单的文本扫描程序,可以使用正则表达式分析基本类型和字符串。
-
ServiceLoader − 此类是一个简单的服务提供程序加载程序。服务加载程序始终在调用者的安全环境中执行。值得信赖的系统代码通常应该在特权安全环境中从此类中调用方法以及从它们返回的迭代器方法。
-
SimpleTimeZone − 此类是 TimeZone 的具体子类,表示用于格里高利日历的时区。
-
Stack − Stack 是 Vector 的子类,它实现了标准后进先出堆栈。Stack 只定义默认构造函数,它创建一个空堆栈。Stack 包括由 Vector 定义的所有方法,并添加了一些自身方法。
-
StringTokenizer − 此类允许应用程序将字符串分解成标记。此类是一个保留下来以保持兼容性的过时类,虽然不鼓励在新代码中使用它。
-
Timer − 此类提供线程调度任务以在后台线程中未来执行的程序。
-
TimerTask − 此类表示可以安排由 Timer 一次性执行或重复执行的任务。
-
TimeZone − 此类表示时区偏移,还计算夏令时。
-
TreeMap − 此类是 Map 接口基于红黑树的实现。TreeMap 类保证 Map 将按升序键排列。
-
TreeSet − 此类实现 Set 接口。TreeSet 类保证 Set 将按升序键排列,并且由 TreeSet 提供支持。
-
UUID − 此类表示不可变的通用唯一标识符 (UUID)。有四种不同 UUID 基本类型:基于时间的 UUID、DCE 安全 UUID、基于名称的 UUID 和随机生成的 UUID。
-
Vector − Vector 实现动态数组。Vector 类实现了可增长的对象数组。类似于 Array,它包含可以使用整数索引访问的组件。
Examples of java.util Package
针对以下范例练习 java.util 程序包类的概念和用法。
Example of java.util.ArrayList
以下程序演示了 ArrayList 支持的多种方法 -
package com.tutorialspoint;
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String args[]) {
// create an array list
ArrayList al = new ArrayList();
System.out.println("Initial size of al: " + al.size());
// add elements to the array list
al.add("C");
al.add("A");
al.add("E");
al.add("B");
al.add("D");
al.add("F");
al.add(1, "A2");
System.out.println("Size of al after additions: " + al.size());
// display the array list
System.out.println("Contents of al: " + al);
// Remove elements from the array list
al.remove("F");
al.remove(2);
System.out.println("Size of al after deletions: " + al.size());
System.out.println("Contents of al: " + al);
}
}
这会产生以下结果 −
Initial size of al: 0
Size of al after additions: 7
Contents of al: [C, A2, A, E, B, D, F]
Size of al after deletions: 5
Contents of al: [C, A2, E, B, D]
Example of java.util.Date
此 Java 示例演示了 Date class 的 from() 方法以获取当前时间的 Date 实例。
package com.tutorialspoint;
import java.time.Instant;
// Import the Date package
import java.util.Date;
// Main public class
public class DateDemo {
public static void main(String[] args) {
// create a date of current time
Date date = Date.from(Instant.now());
// print the date instance
System.out.println("Date: " + date.toString());
}
}
让我们编译并运行上述程序,这将生成以下结果 −
Date: Mon Apr 01 10:20:08 IST 2024
Example of java.util.Random
以下示例展示了 Java Random doubles() 方法的使用。首先,我们创建了一个 Random 对象,然后使用 doubles() 检索一个随机双精度值的流,并打印第一个值。
package com.tutorialspoint;
import java.util.Random;
import java.util.stream.DoubleStream;
public class RandomDemo {
public static void main( String args[] ) {
// create random object
DoubleStream randomNoStream = new Random().doubles();
// print a random double value
randomNoStream.limit(1).forEach( i -> System.out.println(i));
}
}
让我们编译并运行以上的程序,这会生成以下结果:
0.5129590222446587