Java.util Packages Tutorial

Java.util 包教程

Java - java.util 包

java.util 包是 Java SDK 的标准包。它包含集合框架、遗留集合类、事件模型、日期和时间工具、国际化以及各种实用程序类。此包非常有用,因为它提供了常用的集合,如 ArrayList、HashMap、Set 等。Java.util 提供了用于字符串操作的 StringTokenizer 类,以及用于事件模型处理、日期和时间操作等的其它实用程序类。本参考将引导您了解 **java.util** 包中提供的简单易用的方法。

导入 java.util 包

作为 Java 的内置包,我们不需要下载任何外部库来使用 **java.util** 包及其所有类,可以使用以下语法导入:

import java.util.*;

这里我们使用 * 运算符导入 java.util 包中的所有类,现在程序中可以使用任何类。如果要导入特定的类,例如 ArrayList,可以使用以下语法:

import java.util.ArrayList;

为什么 Java 程序中使用 java.util 包

Java.util 包中的类包含实用程序类,例如集合框架、字符串操作实用程序、日期和时间操作实用程序。以下列表显示了 java.util 包中类的一些类别。

  • 集合 − ArrayList、HashMap、Dictionary 是 java.util 包中大量集合类中的一些类。这些类提供了对大型数据集的常用操作。

  • 日期时间操作 − GregorianCalendar、Timezone 是 java.util 包中一些实用程序类。这些类提供了对日期和时间的常用操作。

  • 字符串操作 − StringTokenizer 是 java.util 包中一个重要的实用程序类。此类提供了许多操作来操作字符串。

  • 枚举 − java.util 包的 Enumeration 类提供了对值集的操作,例如迭代、比较等。

  • 异常 − java.util 包包含各种常见的异常,例如 ConcurrentModificationException、InputMismatchException 等。

java.util 包中的重要类

以下是 java.util 包中一些重要类的列表:

  • ArrayDeque − 此类提供可调整大小的数组并实现 Deque 接口。此类及其迭代器实现了 Collection 和 Iterator 接口的所有可选方法。
  • 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 类型:基于时间的、DCE 安全的、基于名称的和随机生成的 UUID。
  • Vector − Vector 实现动态数组。Vector 类实现可增长的对象数组。类似于数组,它包含可以使用整数索引访问的组件。

java.util 包的示例

练习以下示例以学习 java.util 包类的概念和用法。

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]

java.util.Date 示例

Java 示例演示了Date 类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

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

何时使用 java.util 包?

每当我们需要操作集合、字符串、执行事件处理等时,都可以依赖 java.util 包中提供的实用程序类。本参考为初学者准备,帮助他们理解 Java.util 包中所有方法的基本功能。

前提条件

在开始练习本参考中提供的各种示例之前,我假设您已经了解基本的 Java 编程。

广告