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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值