zoukankan      html  css  js  c++  java
  • java中的最重要的 集合框架

    java.util这个重要的包包含大量的类和接口,支持很多的功能。例如,java.util具有能产生伪随机数的类,还包括可以管理日期和时间、观察事件、操作位集合、标记字符串、处理格式化数据等的类。java.util包也包含了Java中功能最强大的子系统之一:集合框架(collections Framework). 以下将分析集合框架中的接口和类。

    集合接口:

      

    Collection 允许处理一组对象,它位于集合层次结构的项部
    Deque 扩展Queue接口,以处理双端队列
    List 扩展Collection接口,以处理序列(列表中的可以包含重复的元素)
    NavigableSet 扩展SortedSet接口,以处理基于最接近匹配搜索的元素的取回
    Queue 扩展Collection接口,以处理列表中的特殊类型,其中的元素只能从前面删除
    Set 扩展Collection接口,以处理集合,其中的元素必须唯一
    SortedSet 扩展Set接口,以处理排序的集合

    除了集合接口外,集合中还使用了Comparator, RandomAccess, Iterator 和 ListIterator 接口。简而言之,Comparator接口定义如何比较两个对象,Iterator和ListIterator接口例举集合中的对象。

    Queue接口中有几个方法值得注意:poll()和remove()这两个方法都是删除一个元素,它们的区别在于,如果队列为空,则poll()返回null,而remove()会抛出一个异常,另外存在获得但不删除队列顶部元素的两种方法:element()和peek()。它们的区别在于,如果队列为空,则element()抛出一个异常,而peek()返回null。

    集合类:

    AbstractCollection 实现大部分Collection接口
    AbstractList 扩展AbstractCollection, 实现大部分List接口
    AbstractQueue 扩展AbstractCollection, 实现部分Queue接口
    AbstractSequentialList  扩展AbstractList, 用于顺序而不是随机访问集合的元素
    LinkedList 通过扩展 AbstractSequentialList 实现链表
    ArrayList 通过扩展 AbstractList实现动态数组
    ArrayDeque 通过扩展AbstractCollection和实现Deque接口,实现动态双端队列
    AbstractSet 扩展AbstractCollection, 实现大部分Set接口
    EnumSet 扩展AbstractSet, 用于enum元素
    HashSet 扩展AbstractSet, 用于哈希表
    LinkedHashSet 扩展HashSet, 允许按照插入的顺序来迭代
    PriorityQueue 扩展AbstractQueue, 支持基于优先级的队列
    TreeSet 在树中实现组,扩展AbstractSet

     ArrayList 类扩展了AbstractList接口,并实现了List接口,ArrayList是一个泛型类,它的声明如下:

                       class ArrayList<E> 其中,E 指定将保存列表的对象的类型。

    LinkedList类扩展了AbstractSequentialList,并实现List,Deque和Queue接口。它提供一个链表型的数据结构,LinkedList是一个泛型类,它的声明如下:class LinkedList<E>,其中,E指定将保存列表的对象的类型。

     

    HashSet类扩展了AbstractSet,并且实现了Set接口,它创建一个使用哈希表来存储元素的集合。HashSet是一个泛型,它的声明如下: class HashSet<E>其中,E指定组将保存的对象类型。

     

    LinkedHashSet类扩展了HashSet,但是没有添加自己的成员。LinkedHashSet是一个泛型类,它的声明如下:class LinkedHashSet<E>。LinkedHashSet 以元素插入的顺序来维护组中项的链表。它允许以插入的顺序在组中迭代。也就是说,当使用迭代器在LinkedHashSet中循环时,元素将以插入的顺序返回。

     

    TreeSet类扩展了AbstractSet,并且实现了NavigableSet接口。它创建一个使用树结构来存储元素的集合,对象以升序顺序存储,访问和取回的时间很快。这使得TreeSet是存储大量有序信息的很好选择,以便能很快找到。

     

    通过迭代器访问集合。通常,有许多情况需要遍历集合中的元素,例如显示集合中的每一个元素,一种遍历方法是使用迭代器,它是实现Iterator或者ListIterator接口的对象,使用迭代器能够在集合中遍历,以获取或者删除元素。在使用迭代器访问集合之前,必须先能够获得一个迭代器。每个集合类都提供iterator()方法来返回一个迭代器,它指向集合的开始处,通过使用这个迭代器对象,可以按一个接一个的方式访问集合中的每一个元素。一般地来说,使用迭代器遍历集合的内容时应遵循下面的步骤:

            1、通过集合的iterate()方法获得一个指向集合开始处的迭代器;

            2、设置一个调用 hasNext() 方法的循环。只要 hasNext()返回true,就进行循环迭代;

            3、在循环中,调用next()方法获得每个元素。

    映射(Map)是存储键和值之间联系或者键/值对的对象,给定一个键,可以找到它对应的值。

    映射接口

    Map 映射唯一键到值
    Map.Entry 描述映射中的元素(一个键/值对)。它是Map的内部类
    NavigableMap 扩展SortedMap,以处理基于最接近匹配搜索的键/值对的取回
    SortedMap 扩展Map,将键以升序保存

    Map.Entry接口,能够使用映射项(即映射的一个键/值对)。注意,Map接口声明的entrySet()方法返回的是包含所有映射键/值对的组,每个元组元素就是一个Map.Entry对象。Map.Entry是一个泛型接口。

    映射类:

    AbstractMap 实现大部分Map接口
    EnumMap 扩展AbstractMap,用于enum键
    HashMap  扩展AbstractMap,用于哈希表
    TreeMap 扩展AbstractMap,用于树结构
    WeakHashMap 扩展AbstractMap,用于弱键的哈希表
    LinkedHashMap 扩展HashMap,允许按照插入的顺序来迭代
    IdentityHashMap 扩展AbstractMap,并在比较文档时使用等价的引用
  • 相关阅读:
    GrapeCity Documents (服务端文档API组件) V3.0 正式发布
    js 手机号码正则表达式
    springMvc 注解@JsonFormat 日期格式化
    solr java代码
    solr全文检索
    在阿里云服务器CentOS7安装mysql提示“No package mysql-server available上安装mysql遇到的问题
    MockBean 单元测试
    redis缓存
    c3p0连接池
    springboot Transactional事务的使用
  • 原文地址:https://www.cnblogs.com/hoojjack/p/4759583.html
Copyright © 2011-2022 走看看