`

java.util几个重要类说明

阅读更多

转载:http://blog.csdn.net/li_jinjian2005/article/details/2827892


软件包 java.util    重要的部分用红色标

包含集合框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。

请参见:  
          描述

接口摘要
Collection<E> Collection 层次结构   中的根接口。
Comparator<T> 比较函数强行对某些对象 collection 进行整体排序
Enumeration<E> 实现 Enumeration 接口的对象,它生成一系列元素,一次生成一个。
EventListener 所有事件侦听器接口必须扩展的标记接口。
Formattable Formattable   接口必须通过需要执行自定义格式化(使用  Formatter    's'   转换说明符)的任何类来实现。
Iterator<E> 对集合进行迭代的迭代器。
List<E> 有序的 collection(也称为序列 )。
ListIterator<E> 系列表迭代器,允许程序员按任一方向遍历列表、迭代期间修改列表,并获得迭代器在列表中的当前位置。
Map<K,V> 将键映射到值的对象。
Map.Entry<K,V> 映射项(键-值对)。
Observer 一个可在观察者要得到 observable 对象更改通知时可实现  Observer   接口的类。
Queue<E> 在处理元素前用于保存元素的集合。
RandomAccess List   实现所使用的标记接口,用来表明其支持快速(通常是固定时间)随机访问。
Set<E> 一个不包含重复元素的 collection。
SortedMap<K,V> 保证按照键的升序排列的映射,可以按照键的自然顺序 (参见  Comparable   接口)进行排序,或者通过创建有序映射时提供的比较器进行排序。
SortedSet<E> 保证迭代器按照元素递增顺序遍历的集合,可以按照元素的自然顺序 (参见 Comparable)进行排序,或者按照创建有序集合时提供的 Comparator进行排序。

 

类摘要
AbstractCollection<E> 此类提供了  Collection   接口的骨干实现,从而最大限度地减少了实现此接口所需的工作。
AbstractList<E> 此类提供  List   接口的骨干实现,从而最大限度地减少了实现由“随机访问”数据存储(如数组)支持的接口所需的工作。
AbstractMap<K,V> 此类提供了  Map   接口的骨干实现,从而最大限度地减少了实现此接口所需的工作。
AbstractQueue<E> 此类提供某些  Queue   操作的骨干实现。
AbstractSequentialList<E> 此类提供了  List   接口的骨干实现,从而最大限度地减少了实现受“连续访问”数据存储(如链接列表)支持的此接口所需的工作。
AbstractSet<E> 此类提供  Set   接口的骨干实现,从而最大限度地减少了实现此接口所需的工作。
ArrayList<E> List   接口的大小可变数组的实现。
Arrays 此类包含用来操作数组(比如排序和搜索)的各种方法。
BitSet 此类实现了一个按需增长的位向量。
Calendar Calendar   类是一个抽象类,它为特定瞬间与一组诸如YEARMONTHDAY_OF_MONTHHOUR    日历字段 之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
Collections 此类完全由在 collection 上进行操作或返回 collection 的静态方法组成。
Currency 表示货币。
Date   Date   表示特定的瞬间,精确到毫秒。
Dictionary<K,V> Dictionary   类是任何可将键映射到相应值的类(如  Hashtable )的抽象父类。
EnumMap<K extends Enum<K>,V> 与枚举类型键一起使用的专用  Map   实现。
EnumSet<E extends Enum<E>> 与枚举类型一起使用的专用  Set   实现。
EventListenerProxy 将一组附加参数与侦听器关联的 EventListener 类的抽象包装器类。
EventObject 所有事件状态对象都将从其派生的根类。
FormattableFlags 将 FomattableFlags 传递给  Formattable.formatTo()   方法,并修改Formattables   的输出格式。
Formatter printf 风格的格式字符串的解释程序。
GregorianCalendar GregorianCalendar    Calendar   的一个具体子类,提供了世界上大多数国家使用的标准日历系统。
HashMap<K,V> 基于哈希表的  Map   接口的实现。
HashSet<E> 此类实现  Set   接口,由哈希表(实际上是一个  HashMap   实例)支持。
Hashtable<K,V> 此类实现一个哈希表,该哈希表将键映射到相应的值。
IdentityHashMap<K,V> 此类利用哈希表实现  Map   接口,比较键(和值)时使用引用相等性代替对象相等性。
LinkedHashMap<K,V> Map   接口的哈希表和链接列表实现,具有可预知的迭代顺序。
LinkedHashSet<E> 具有可预知迭代顺序的  Set   接口的哈希表和链接列表实现。
LinkedList<E> List   接口的链接列表实现。
ListResourceBundle ListResourceBundle    ResourceBundle   的一个抽象类,用于管理方便而又易于使用的列表中的语言环境资源。
Locale Locale   对象表示了特定的地理、政治和文化地区。
Observable 此类表示模型视图范例中的 observable 对象,或者说“数据”。
PriorityQueue<E> 一个基于优先级堆的极大优先级队列
Properties Properties   类表示了一个持久的属性集。
PropertyPermission 此类用于属性权限。
PropertyResourceBundle PropertyResourceBundle    ResourceBundle   的一个具体子类,它使用属性文件中的静态字符串集合来管理语言环境资源。
Random 此类的实例用于生成伪随机数流。
ResourceBundle 资源包包含特定于语言环境的对象。
Scanner 一个可以使用正则表达式来分析基本类型和字符串的简单文本扫描器。
SimpleTimeZone SimpleTimeZone    TimeZone   的具体子类,表示一个使用格里高利历的时区。
Stack<E> Stack   类表示后进先出(LIFO)的对象堆栈。
StringTokenizer string tokenizer 类允许应用程序将字符串分解为标记。
Timer 一种线程设施,用于安排以后在后台线程中执行的任务。
TimerTask 由 Timer 安排为一次执行或重复执行的任务。
TimeZone TimeZone   表示时区偏移量,也可以计算夏令时。
TreeMap<K,V> SortedMap   接口的基于红黑树的实现。
TreeSet<E> 此类实现  Set   接口,该接口由  TreeMap   实例支持。
UUID 表示通用惟一标识符 (UUID) 的类。
Vector<E> Vector   类可以实现可增长的对象数组。
WeakHashMap<K,V> 弱键   实现的基于哈希表的  Map

 

枚举摘要
Formatter.BigDecimalLayoutForm  

 

异常摘要
ConcurrentModificationException 当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
DuplicateFormatFlagsException 格式说明符中提供重复标志时抛出的未经检查的异常。
EmptyStackException 该异常由  Stack   类中的方法抛出,以表明堆栈为空。
FormatFlagsConversionMismatchException 转换与标志不兼容时抛出未经检查的异常。
FormatterClosedException 格式化程序已关闭时抛出的未经检查的异常。
IllegalFormatCodePointException 将具有  Character.isValidCodePoint(int)   所定义的无效 Unicode 代码点的字符传递给  Formatter   时,抛出未经检查的异常。
IllegalFormatConversionException 当对应于格式说明符的参数为不兼容的类型时,抛出未经检查的异常。
IllegalFormatException 当格式字符串包含非法语法,或者包含与给定参数不兼容的格式说明符时,将抛出未经检查的异常。
IllegalFormatFlagsException 当给出非法组合标志时,抛出未经检查的异常。
IllegalFormatPrecisionException 当精度为除  -1   以外的负值、转换类型不支持某个精度或者值在其他方面不受支持时,将抛出未经检查的异常。
IllegalFormatWidthException 当格式宽度为除  -1   以外的负值或其他不受支持的值时,将抛出未经检查的异常。
InputMismatchException   Scanner   抛出,表明用于检索的标记与期望类型的模式不匹配,或者该标记处在期望类型的范围之外。
InvalidPropertiesFormatException 当按照  Properties   规范,输入内容不符合属性集合的正确 XML 文档类型,从而无法完成操作时,抛出此异常。
MissingFormatArgumentException 如果格式说明符没有相应的参数,或者参数索引引用了不存在的参数时,则抛出未经检查的异常。
MissingFormatWidthException 请求格式宽度时抛出未经检查的异常。
MissingResourceException 缺少资源时抛出此异常。
NoSuchElementException   Enumeration    nextElement   方法抛出,表明枚举中没有更多的元素。
TooManyListenersException TooManyListenersException  异常用作 Java Event 模型的一部分来注释和实现多播 Event Source 的单播特例。
UnknownFormatConversionException 给定未知的转换时所抛出的未经检查的异常。
UnknownFormatFlagsException

给定未知标志时所抛出的未经检查的异常。

 

 

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

分享到:
评论

相关推荐

    Tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException)

    在Java中,这主要与JVM(Java虚拟机)的内存模型有关,该模型包括堆(Heap)、栈(Stack)、方法区(Method Area)和程序计数器(PC Register)等几个区域。当堆或方法区的内存耗尽时,就会抛出`OutOfMemoryError`。...

    java并发工具包 java.util.concurrent中文版pdf

    为了简化并发编程的复杂性,Java 5 引入了 `java.util.concurrent` 包,提供了一系列强大的类和接口,帮助开发者更高效地管理多线程任务。 #### 二、`java.util.concurrent` 概览 `java.util.concurrent` 包提供了...

    java.util.zip 解压缩文件,ZIP格式压缩文件.rar

    `java.util.zip` 包包含几个关键类,如 `ZipInputStream`, `ZipOutputStream`, `ZipEntry` 等,它们共同协作以完成ZIP文件的读写操作。 首先,让我们看看如何解压缩ZIP文件。解压缩过程主要涉及到 `ZipInputStream`...

    JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecutor)使用

    JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecutor)使用是Java多线程编程中的一种重要概念。随着多线程编程的普及,线程池的使用变得越来越频繁。Java中的线程池是通过ThreadPoolExecutor类实现的。 一、...

    java.util.Calendar求日期

    在Java编程语言中,`java.util.Calendar`类是处理日期和时间的重要工具之一。通过`Calendar`类,我们可以轻松地获取、操作和解析日期及时间数据。本文将深入探讨如何利用`java.util.Calendar`来计算特定日期,如今天...

    The java.util.concurrent Synchronizer Framework

    本文将详细介绍`java.util.concurrent`包中的同步器框架的设计理念、实现机制、使用方法及性能表现,帮助开发者更好地理解和使用这一重要的并发工具。 #### 设计理念与实现 同步器框架的核心是`...

    java的.awt包和java.util包的区别

    Java.util包是一个非常重要的标准库之一,其中包含了大量有用的类和接口,为开发者提供了丰富的功能。此包中的类和接口可以分为以下几大类别: 1. **集合框架**: - **Collection**:这是一个接口,所有集合类的根...

    java-util-iterator.pdf java-util-iterator.pdf

    我们将从以下几个方面进行详细解析: ### 一、集合类的根接口:Collection `Collection`接口是Java集合框架的基础,它定义了集合类应该具有的基本行为。此接口中的方法包括但不限于`add()`、`addAll()`、`remove()...

    tomcat启动报错:java.util.zip.ZipException的解决方法

    这个异常是由Java的ZIP文件处理类抛出的,当尝试访问或读取ZIP文件时,如果发现文件头部的签名不正确,或者文件内容损坏,就会抛出此异常。在Tomcat中,这通常发生在Tomcat尝试展开WAR文件或加载包含的JAR文件时。 ...

    java.util.ServiceLoader demo

    在Java编程语言中,`java.util.ServiceLoader` 是一个实用工具类,用于加载符合特定接口或抽象类的服务提供者。这个工具在Java平台标准版(Java SE)中被广泛使用,尤其是在实现模块化和插件化系统时。下面将详细...

    Java Methods-java.util.ArrayList.ppt

    Java.util.ArrayList 是 Java 语言中一个非常重要的类,它实现了一个可以动态调整大小的数组列表。下面我们将详细讨论 ArrayList 类的构造方法、方法、特点和使用场景。 一、ArrayList 类的构造方法 ArrayList 类...

    java并发工具包 java.util.concurrent中文版-带书签版

    在`java.util.concurrent`包中,主要包含以下几个核心知识点: 1. **线程池(ExecutorService)**:线程池是一种线程管理机制,通过复用已存在的线程来减少创建和销毁线程的开销。`ExecutorService`接口是线程池的...

    java.util.Scanner应用详解_.docx

    `java.util.Scanner` 类是 Java 标准库中的一个实用工具类,它提供了一种方便的方式来读取基本类型的原始数据和字符串。`Scanner` 类可以读取从控制台输入的数据、文件中的数据,甚至是从字符串中的数据。 #### 二...

    struts的form不能初始化java.util.Date类型

    然而,在使用Struts时,可能会遇到一个问题,即无法初始化`java.util.Date`类型的表单(Form)字段。这个问题在实际开发中很常见,因为日期和时间的处理是Web应用中的核心功能。 在Struts框架中,表单通常由...

    java-util-1.3.1.jar.zip

    在`java-util`包中,我们通常会发现以下几类常见的工具类: 1. **集合框架扩展**:可能包含对Java内置集合类(如List、Set、Map)的增强,提供更高效的操作,例如快速排序、线程安全的实现等。 2. **日期和时间...

    java util工具类1

    首先,我们来详细了解`java.util`包中的几个关键工具类: 1. **ArrayList和LinkedList**:这两个都是`List`接口的实现,用于存储有序的元素序列。ArrayList基于动态数组实现,提供快速的随机访问,但插入和删除操作...

    java.text.ParseException: Unparseable date: 2/10/2010 15:20:05

    这个异常表明,程序正在尝试将这个日期字符串转换成 `java.util.Date` 或 `java.time` API 中的某个日期对象,但因为日期格式与预期的解析模式不符,导致了解析失败。在Java中,日期和时间的解析是通过 `...

    java util包使用详解

    下面将逐一介绍其中几个重要的类。 日期类Date Java中的日期类封装了有关日期和时间的信息,用户可以通过调用相应的方法来获取系统时间或设置日期和时间。Date类中有六种构造函数,分别是: 1. `public Date()`,...

Global site tag (gtag.js) - Google Analytics