软件包 java.util
重要的部分用红色标
示
包含集合框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。
请参见:
描述
List与Set的比较
Collection是用于集合的基本接口,定义了保存一组对象(元素)的语义。
List |
继承自Collection,次序是List最重要的特点;它确保维护元素特定的顺序,允许重复元素
。List为Collection添加了许多方法,使得能够向List中间插入与移除元素(只推荐LinkedList使用)。
2.一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插入和删除元素。
3.List
接口提供了 4 种对列表元素进行定位(索引)访问方法。这个功能推荐使用LinkedList
|
Set |
继承自Collection, 存入Set的每个元素必须是唯一的,因为Set不保存重复元素。加入Set的Object必须定义equals()方法以确保对象的唯一性。
|
LinkedList,ArrayList,Vector比较
LinkedList |
实现了List接口,它内部使用一个双链表来实现,非同步。这样,如果元素经常需要在连接表中插入或删除,它就比ArryList更高效
|
ArrayList |
实现了List接口,它内部通过数组来实现,非同步 。它允许对元素进行快速随机访问,
但是向List中间插入与移除元素的速度很慢。ListIterator只应该用来由后向前遍历ArrayList
,而不是用来插入和删除元素,因为这比LinkedList开销要大很多。 |
Vector |
同样实现了List接口,除了他是同步外,机会和Array一样
。处于效率的考虑,在需要同步的时候才选择Vector,否则选择Array。
它具有方法addFirst()、addLast()、getFirst()、getLast()、removeFirst()、removeLast(),这些方法(没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。
|
HashMap与HashTable比较
HashMap |
实现Map接口,内部使用一个哈希表来实现,其元素的value允许为null,非同步 |
HashTable |
继承自Dictionary,为数据结构哈希表的简单实现。它和Map接口类型,都是允许用户在key对象和valu对象之间建立关系。值得注意的是,哈希表数据结构的特性是所有key查找时间几乎都一样
,如果不需要单端查找某个元素,而是顺序检索,那么应该用ArrayList。HashTable也是同步的
|
经过上面的比较,大致给出使用集合的一点建议:
非同步情况下
1,对应经常需要插入、删除操作的情况,使用LinkedList
2,对于顺序检索的情况,使用ListIterator
3,重要用来单个元素快速访问情况,ArrayList
分享到:
相关推荐
在Java中,这主要与JVM(Java虚拟机)的内存模型有关,该模型包括堆(Heap)、栈(Stack)、方法区(Method Area)和程序计数器(PC Register)等几个区域。当堆或方法区的内存耗尽时,就会抛出`OutOfMemoryError`。...
为了简化并发编程的复杂性,Java 5 引入了 `java.util.concurrent` 包,提供了一系列强大的类和接口,帮助开发者更高效地管理多线程任务。 #### 二、`java.util.concurrent` 概览 `java.util.concurrent` 包提供了...
`java.util.zip` 包包含几个关键类,如 `ZipInputStream`, `ZipOutputStream`, `ZipEntry` 等,它们共同协作以完成ZIP文件的读写操作。 首先,让我们看看如何解压缩ZIP文件。解压缩过程主要涉及到 `ZipInputStream`...
JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecutor)使用是Java多线程编程中的一种重要概念。随着多线程编程的普及,线程池的使用变得越来越频繁。Java中的线程池是通过ThreadPoolExecutor类实现的。 一、...
在Java编程语言中,`java.util.Calendar`类是处理日期和时间的重要工具之一。通过`Calendar`类,我们可以轻松地获取、操作和解析日期及时间数据。本文将深入探讨如何利用`java.util.Calendar`来计算特定日期,如今天...
本文将详细介绍`java.util.concurrent`包中的同步器框架的设计理念、实现机制、使用方法及性能表现,帮助开发者更好地理解和使用这一重要的并发工具。 #### 设计理念与实现 同步器框架的核心是`...
Java.util包是一个非常重要的标准库之一,其中包含了大量有用的类和接口,为开发者提供了丰富的功能。此包中的类和接口可以分为以下几大类别: 1. **集合框架**: - **Collection**:这是一个接口,所有集合类的根...
我们将从以下几个方面进行详细解析: ### 一、集合类的根接口:Collection `Collection`接口是Java集合框架的基础,它定义了集合类应该具有的基本行为。此接口中的方法包括但不限于`add()`、`addAll()`、`remove()...
这个异常是由Java的ZIP文件处理类抛出的,当尝试访问或读取ZIP文件时,如果发现文件头部的签名不正确,或者文件内容损坏,就会抛出此异常。在Tomcat中,这通常发生在Tomcat尝试展开WAR文件或加载包含的JAR文件时。 ...
在Java编程语言中,`java.util.ServiceLoader` 是一个实用工具类,用于加载符合特定接口或抽象类的服务提供者。这个工具在Java平台标准版(Java SE)中被广泛使用,尤其是在实现模块化和插件化系统时。下面将详细...
Java.util.ArrayList 是 Java 语言中一个非常重要的类,它实现了一个可以动态调整大小的数组列表。下面我们将详细讨论 ArrayList 类的构造方法、方法、特点和使用场景。 一、ArrayList 类的构造方法 ArrayList 类...
在`java.util.concurrent`包中,主要包含以下几个核心知识点: 1. **线程池(ExecutorService)**:线程池是一种线程管理机制,通过复用已存在的线程来减少创建和销毁线程的开销。`ExecutorService`接口是线程池的...
`java.util.Scanner` 类是 Java 标准库中的一个实用工具类,它提供了一种方便的方式来读取基本类型的原始数据和字符串。`Scanner` 类可以读取从控制台输入的数据、文件中的数据,甚至是从字符串中的数据。 #### 二...
然而,在使用Struts时,可能会遇到一个问题,即无法初始化`java.util.Date`类型的表单(Form)字段。这个问题在实际开发中很常见,因为日期和时间的处理是Web应用中的核心功能。 在Struts框架中,表单通常由...
在`java-util`包中,我们通常会发现以下几类常见的工具类: 1. **集合框架扩展**:可能包含对Java内置集合类(如List、Set、Map)的增强,提供更高效的操作,例如快速排序、线程安全的实现等。 2. **日期和时间...
首先,我们来详细了解`java.util`包中的几个关键工具类: 1. **ArrayList和LinkedList**:这两个都是`List`接口的实现,用于存储有序的元素序列。ArrayList基于动态数组实现,提供快速的随机访问,但插入和删除操作...
这个异常表明,程序正在尝试将这个日期字符串转换成 `java.util.Date` 或 `java.time` API 中的某个日期对象,但因为日期格式与预期的解析模式不符,导致了解析失败。在Java中,日期和时间的解析是通过 `...
下面将逐一介绍其中几个重要的类。 日期类Date Java中的日期类封装了有关日期和时间的信息,用户可以通过调用相应的方法来获取系统时间或设置日期和时间。Date类中有六种构造函数,分别是: 1. `public Date()`,...