JDK_API剖析之java.util包

Java的实用工具类库java.util包。在这个包中,Java提供了一些实用的方法和数据结构。

一、接口

1、Collection<E>

  • 接口
  • 自1.2开始有
  • 继承Iterable<E>
  • Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 SetList)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。

2、Comparator<T>

  • 接口
  • 自1.2开始有
  • 无父类
  • 强行对某个对象 collection 进行整体排序 的比较函数。可以将 Comparator 传递给 sort 方法(如 Collections.sortArrays.sort),从而允许在排序顺序上实现精确控制。还可以使用 Comparator 来控制某些数据结构(如有序 set有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序。

3、Deque<E>

  • 接口
  • 自1.6开始有
  • 继承Queue<E>
  • 一个线性 collection,支持在两端插入和移除元素。名称 deque 是“double ended queue(双端队列)”的缩写,通常读为“deck”。大多数 Deque 实现对于它们能够包含的元素数没有固定限制,但此接口既支持有容量限制的双端队列,也支持没有固定大小限制的双端队列。

4、Enumeration<E>

  • 接口
  • 自1.0开始有
  • 继承Queue<E>
  • 实现 Enumeration 接口的对象,它生成一系列元素,一次生成一个。连续调用 nextElement 方法将返回一系列的连续元素。

    例如,要输出 Vector<E> v 的所有元素,可使用以下方法:

       for (Enumeration<E> e = v.elements(); e.hasMoreElements();)
           System.out.println(e.nextElement());

    这些方法主要通过向量的元素、哈希表的键以及哈希表中的值进行枚举。枚举也用于将输入流指定到 SequenceInputStream 中。

    注:此接口的功能与 Iterator 接口的功能是重复的。此外,Iterator 接口添加了一个可选的移除操作,并使用较短的方法名。新的实现应该优先考虑使用 Iterator 接口而不是 Enumeration 接口。

5、EventListener

  • 标记接口
  • 自1.1开始有
  • 无父
  • 所有事件侦听器接口必须扩展的标记接口。
  • 没有方法定义

6、Formattable

  • 接口
  • 自1.5开始有
  • 无父
  • Formattable 接口必须通过需要执行自定义格式化(使用 Formatter‘s‘ 转换说明符)的任何类来实现。此接口允许对格式化任意对象的基本控制。

7、Iterator<E>

  • 接口
  • 自1.2开始有
  • 无父
  • 对 collection 进行迭代的迭代器。迭代器取代了 Java Collections Framework 中的 Enumeration。迭代器与枚举有两点不同:
    • 迭代器允许调用者利用定义良好的语义在迭代期间从迭代器所指向的 collection 移除元素。
    • 方法名称得到了改进。

    此接口是 Java Collections Framework 的成员。

8、List<E>

  • 接口
  • 自1.2开始有
  • 继承Collection<E>
  • 有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。

    与 set 不同,列表通常允许重复的元素。更确切地讲,列表通常允许满足 e1.equals(e2) 的元素对 e1e2,并且如果列表本身允许 null 元素的话,通常它们允许多个 null 元素。难免有人希望通过在用户尝试插入重复元素时抛出运行时异常的方法来禁止重复的列表,但我们希望这种用法越少越好。

    List 接口在 iteratoraddremoveequalshashCode 方法的协定上加了一些其他约定,超过了 Collection 接口中指定的约定。为方便起见,这里也包括了其他继承方法的声明。

    List 接口提供了 4 种对列表元素进行定位(索引)访问方法。列表(像 Java 数组一样)是基于 0 的。注意,这些操作可能在和某些实现(例如 LinkedList 类)的索引值成比例的时间内执行。因此,如果调用者不知道实现,那么在列表元素上迭代通常优于用索引遍历列表。

    List 接口提供了特殊的迭代器,称为 ListIterator,除了允许 Iterator 接口提供的正常操作外,该迭代器还允许元素插入和替换,以及双向访问。还提供了一个方法来获取从列表中指定位置开始的列表迭代器。

    List 接口提供了两种搜索指定对象的方法。从性能的观点来看,应该小心使用这些方法。在很多实现中,它们将执行高开销的线性搜索。

    List 接口提供了两种在列表的任意位置高效插入和移除多个元素的方法。

    注意:尽管列表允许把自身作为元素包含在内,但建议要特别小心:在这样的列表上,equalshashCode 方法不再是定义良好的。

    某些列表实现对列表可能包含的元素有限制。例如,某些实现禁止 null 元素,而某些实现则对元素的类型有限制。试图添加不合格的元素会抛出未经检查的异常,通常是 NullPointerExceptionClassCastException。试图查询不合格的元素是否存在可能会抛出异常,也可能简单地返回 false;某些实现会采用前一种行为,而某些则采用后者。概括地说,试图对不合格元素执行操作时,如果完成该操作后不会导致在列表中插入不合格的元素,则该操作可能抛出一个异常,也可能成功,这取决于实现的选择。此接口的规范中将这样的异常标记为“可选”。

    此接口是 Java Collections Framework 的成员。

9、ListIterator<E>

  • 接口
  • 自1.2开始有
  • 继承Iterator<E>
  • 系列表迭代器,允许程序员按任一方向遍历列表、迭代期间修改列表,并获得迭代器在列表中的当前位置。ListIterator 没有当前元素;它的光标位置 始终位于调用 previous() 所返回的元素和调用 next() 所返回的元素之间。长度为 n 的列表的迭代器有 n+1 个可能的指针位置,如下面的插入符举例说明:
                          Element(0)   Element(1)   Element(2)   ... Element(n-1)
     cursor positions:  ^            ^            ^            ^                  ^
    

    注意,remove()set(Object) 方法不是 根据光标位置定义的;它们是根据对调用 next()previous() 所返回的最后一个元素的操作定义的。

10、Map<K,V>

  • 接口
  • 自1.2开始有
  • 无父
  • 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

    此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。

    Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;另一些映射实现则不保证顺序,如 HashMap 类。

11、Map.Entry<K,V>

  • 接口
  • 自1.2开始有
  • 继承Iterator<E>
  • 映射项(键-值对)。Map.entrySet 方法返回映射的 collection 视图,其中的元素属于此类。获得映射项引用的唯一 方法是通过此 collection 视图的迭代器来实现。这些 Map.Entry 对象 在迭代期间有效;更确切地讲,如果在迭代器返回项之后修改了底层映射,则某些映射项的行为是不确定的,除了通过 setValue 在映射项上执行操作之外。

原文地址:https://www.cnblogs.com/yang75n/p/8447045.html

时间: 2024-10-01 23:19:57

JDK_API剖析之java.util包的相关文章

JDK_API剖析之java.net包

为实现网络应用程序提供类.(按照字母顺序排序) 1.Authenticator 抽象类 自1.2开始有 无父类和接口 Authenticator 类表示懂得如何获得网络连接验证的对象.通常,它通过提示用户输入信息来完成此操作.应用程序通过重写子类中的 getPasswordAuthentication() 使用此类.此方法通常使用各种 getXXX() 访问器方法获取关于请求验证的实体的信息.然后,它必须通过与用户交互或者某些其他非交互手段获取用户名和密码.之后凭据将以 PasswordAuth

JDK_API剖析之java.lang包

java.lang是Java语言的基础包,默认包中的所有来自动import到你写的类中.(按照字母排序) 1.AbstractMethodError 类.错误 自1.0开始有 继承自IncompatibleClassChangeError 当应用程序试图调用一个抽象方法时,抛出此错误.通常由编译器捕获此错误:如果某个类的定义自当前执行方法最后一次编译以后作了不兼容的更改,则此错误只可能在运行时发生. 有带消息和无参构造函数 没有自定义方法 2.Appendable 接口 自1.5开始有 没有父接

java util包概述

util是utiliy的缩写,意为多用途的,工具性质的包这个包中主要存放了:集合类(如ArrayList,HashMap等),随机数产生类,属性文件读取类,定时器类等类.这些类极大方便了Java编程,日常java编程中,经常要用到这些类. 介绍 Java的实用工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结构.例如,Java提供日期(Data)类.日历 (Calendar)类来产生和获取日期及时间,提供随机数(Random)类产生各种类型的随机数,还提供了堆栈(St

JDK源码简析--java.util包中的工具类库

题记 JDK,Java Development Kit. 我们必须先认识到,JDK只是,仅仅是一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含量来说,还是在一个层级上,它们都是需要被编译成字节码,在JRE中运行的,JDK编译后的结果就是jre/lib下得rt.jar,我们学习使用它的目的是加深对Java的理解,提高我们的Java编码水平. 本系列所有文章基于的JDK版本都是1.7.16. 本节内容 在本节中,简析java.util包所包

java.util包

该包内容有: 1 容器 1.1 Collection接口 所有实现了Collection及其子接口的类,构成集合类.Collection 层次结构中的根接口.Collection 表示一组对象,这些对象也称为 collection 的元素. Collcetion的子接口有: Set.集合.该集合中对象是不能重复的,一般是无序的.重要的Set实现类有HashSet.TreeSet. List.列表.该集合中对象是有序的,可以重复.重要的List实现类有ArrayList.LinkedList.Ve

Java集合类 java.util包

概述   软件包  类  使用  树  已过时  索引  帮助  JavaTM Platform Standard Ed. 6  上一个软件包   下一个软件包 框架    无框架            &amp;lt;a href="../../allclasses-noframe.html"&amp;gt;&amp;lt;b&amp;gt;所有类&amp;lt;/b&amp;gt;&amp;lt;/a&amp;gt;

Java.util包教程

java.util.ArrayDeque 类提供了可调整大小的阵列,并实现了Deque接口.以下是关于阵列双端队列的要点: 数组双端队列没有容量限制,使他们增长为必要支持使用. 它们不是线程安全的;如果没有外部同步. 不支持多线程并发访问. null元素被禁止使用在数组deques. 它们要比堆栈Stack和LinkedList快. 此类及其迭代器实现Collection和Iteratorinterfaces方法可选. 点击链接查看更多

java学习--java.util包中常用类

java.util包被称为java工具包,里面包含大部分的工具类 Random 随机数类 new Random() rd.nextInt() rd.nextInt(100) Scanner 扫描器类 Scanner sc = new Scanner(system.in); String str = sc.next(); String str1 = sc.nextLine(); int t = sc.nextInt(); float t = sc.nextFloat(); Date 日期类 Dat

java.util包详解(二)——Connection接口

Connection接口介绍 Connection接口是java集合的root接口,没有实现类,只有子接口和实现子接口的各种容器.主要用来表示java集合这一大的抽象概念. Connection接口要求,所有实现此接口的容器,必须提供至少两种构造方法:无参构造方法.参数为Connection类的构造方法.后者需要创建一个具有和参数包含元素相同的新集合,以此来进行集合的复制.java中所有的api均遵守了此规则. 如果集合不支持某种修改方式,那么进行这种修改操作的方法必须抛出Unsupported