美文网首页Java入门基础
java集合框架 接口篇

java集合框架 接口篇

作者: 时芥蓝 | 来源:发表于2016-12-04 14:20 被阅读73次

    java集合接口

    核心的接口是被封装为不同类型的集合,如下图所示。这些接口允许集合去操作独立的细节和实现。核心的集合接口是java集合框架的基础。正如你在下图看到的,这些核心接口来自于一个层次关系。

    核心集合接口层次图核心集合接口层次图

    Set是一个特定类型的集合,SortedSet是一个特定类型的Set。从上图可以看到,有两颗分开的树,[map][3]不是一个真正的Collection

    所有的核心集合接口都是通用的,例如,下面是[Collection][1]的接口声明:

    public interface Collection<E>...
    

    <E>语法告诉你这个接口是通用的。当你声明一个集合实例的时候,你应该指定这个集合中包含对象的类型。指定类型的好处是,在编译时,允许编译器去校验你put到集合的对象是否时正确的,减少了运行时错误。

    当你知道如何使用这些接口的时候,你将会明白更多的有关java集合框架的东西。

    下面的列表描述了核心的集合接口

    • **Collection ** 集合接口层次的最顶层接口。集合表示为一组对象。Collection接口是所有集合实现的最小单位。封装了所有集合的最通用性的操作。一些类型的集合允许重复元素,而其他不允许。有些是有序的,有些是无须的。java平台不提供任何该接口的直接实现,而是提供更具体的子接口的实现,比如SetList.具体请看The Collection Interface.
    • Set 不能包含重复元素的集合,是对数学上的集合进行的抽象。请参考The Set Interface
    • **list ** 一个排序的集合。有时被称为序列。可以包含重复的对象,可以通过索引定位到元素。请参考The List Interface
    • Queue 用于在处理之前保存多个元素的集合。除了基本的集合操作之外,队列提供额外的插入,提取和检查操作。队列通常但不一定以FIFO(先进先出)方式对元素排序。比如,优先级队列,其根据提供的比较器或元素的自然排序来排序元素。无论使用什么排序,队列的头部都是通过调用remove或poll来删除的元素。在FIFO队列中,所有新元素都插入到队列的尾部。其他类型的队列可以使用不同的布置规则。每个队列实现必须指定其排序属性。另请参阅队列接口部分。请参照The Queue Interface
    • Deque 用于在处理之前保存多个元素的集合。除了基本的收集操作,Deque还提供额外的插入,提取和检查操作。 Deques可以用作FIFO(先进先出)和LIFO(后进先出)。在deque中,所有新元素可以在两端插入,检索和删除。另请参阅Deque接口部分。请参照The Deque interface
    • Map 将键映射到值的对象。map中不能包含重复的键;每个键可以映射到至多一个值。如果你已经使用Hashtable,你已经熟悉了Map的基础知识。另见地图界面部分。请参照The Map Interface

    最后两个核心的集合接口是SetMap的排序版本

    • SortedSet 一个有序的Set集合,默认排序为升序。提供了一些操作去利用这个顺序。用于自然排序的集合,例如单词列表和成员资格卷。另请参见SortedSet接口部分。

    • SortedMap 一个有序的Map集合,默认排序为升序。这是一个类似SortedSet的map。用于自然排序的键值对组合,比如词典或者是电话薄。

      想了解有序集合接口维护内部元素顺序的原因,请参考Object Ordering


    Collection

    Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
      所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个 Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后 一个构造函数允许用户复制一个Collection。
      如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:

    Iterator it = collection.iterator(); // 获得一个迭代器
        while(it.hasNext()) {
          Object obj = it.next(); // 得到下一个元素
        }
    

    由Collection接口派生的两个接口是List和Set。

    List

    • 位置访问 基于他们在列表中的索引下标操作元素。包括get set add addAll remove等方法;

    • 查找 查找某一个特定的对象将会返回这个对象的下标。 比如 indexOflastIndexOf

    • 迭代 继承了Iterator ,利用列表的顺序属性;

    • range-view 使用subList方法可以对某个范围的列表进行操作

      java平台包括了两个list接口的实现,一个是ArrayList ,一般情况下它的性能是最好的,另一个实现是LinkedList,在某些情况下它的性能是好的。

    • 它的一些操作

      • remove,总是remove第一次出现的某个特定的元素。
      • addaddAll,总是在集合的尾部追加这些新的元素。

    相关文章

      网友评论

        本文标题:java集合框架 接口篇

        本文链接:https://www.haomeiwen.com/subject/muehmttx.html