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,并在比较文档时使用等价的引用

java中的最重要的 集合框架的更多相关文章

  1. Java 学习(16):集合框架

    Java 集合框架 早在Java 2中之前,Java就提供了特设类.比如:Dictionary, Vector, Stack,  Properties 这些类用来存储和操作对象组. 虽然这些类都非常有 ...

  2. java中Comparator的用法 -- 实现集合和数组排序

    在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标. 接下来我们模拟下在集合对象中对日期属性进行排序 一.实体类Step package com.l ...

  3. 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合

    不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...

  4. java 面向对象编程-- 第15章 集合框架

    1.  集合特点:元素类型不同.集合长度可变.空间不固定 2.  java中对一些数据结构和算法进行了封装即集合.集合也是一种对象,用于存储.检索.操作和传输对象. 3.  JCF(Java Coll ...

  5. Java编程练习(四)——集合框架应用

    Java集合框架小应用之扑克牌小游戏 学习了Java集合框架之后,我写了一个扑克牌小游戏来巩固知识.学习之余的练习之作,有不足之处还得多多指教了~(*/ω\*) 扑克牌小游戏背景: 1. 创建一副扑克 ...

  6. Java高级特性 第1节 集合框架和泛型

    Java中,存储多个同类型的数据,可以用数组来实现,但数组有一些缺陷: 数组长度固定不变,布恩那个很好的适应元素数量动态变化的情况 可以通过数组.length获取数组长度,却无法直接获取数组中实际存储 ...

  7. Java学习笔记【九、集合框架】

    集合框架设计的目标: 高性能. 允许不同类型的集合,以类似的方式工作,有互操作性. 对一个集合的扩展和适应必须简单. 集合框架包含: 接口:代表集合的抽象数据类型. 实现(类):具体实现(ArrayL ...

  8. Java SE 核心 II【Collection 集合框架】

    Collection集合框架 在实际开发中,需要将使用的对象存储于特定数据结构的容器中.而 JDK 提供了这样的容器——集合框架,集合框架中包含了一系列不同数据结构(线性表.查找表)的实现类.集合的引 ...

  9. java oop第07章_集合框架

    一. 什么是集合: 在Java中提供了一些可以保存同一数据类型的数据集称为集合,就是规定了一些集合的规范(接口.抽象类.实现类)及方法, 方便我们程序在保存数据时进行增.删.改.查操作,编程更加高效. ...

随机推荐

  1. windows 2003 群集

    http://www.tudou.com/programs/view/-UZoSIuUvXs/

  2. python开发者通过国内镜像安装pip包

    对于Python开发用户来讲,PIP安装软件包是家常便饭.但国外的源下载速度实在太慢,浪费时间.而且经常出现下载后安装出错问题.所以把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装成 ...

  3. laravel模型中打印sql语句

    模型中有个 ->toSql() 可以打印sql语句

  4. AngularJS 中 Controller 之间的通信

    用 Angular 进行开发,基本上都会遇到 Controller 之间通信的问题,本文对此进行一个总结. 在 Angular 中,Controller 之间通信的方式主要有三种: 1)作用域继承.利 ...

  5. shell监控脚本实例—监控mysql主从复制

    分享一例shell脚本,用于监测mysql数据库的主从复制,有需要的朋友不妨参考学习下. 转自:http://www.jbxue.com/article/14103.html(转载请注明出处) 本节内 ...

  6. 编译器DIY——读文件

    编译器的前端词法分析:将源文件解析成一个个的单词流.为语法分析做准备. 在词法分析阶段,我们要做的就是将词分出来,而且确定单词的类型,一般的程序设计语言的单词符号能够份为下面5种: 1.keyword ...

  7. Xcode常见问题

    今天真机测试的时候,突然出现了这个错误:  not have an architecture that “Administrator”的 iPhone (3) can execute. 原因是我刚刚修 ...

  8. 使用 ChromaKey 滤镜进行抠图

    简介 Nokia Imaging SDK  1.0 中新提供的 ChromaKey 滤镜是一个神奇的滤镜,它的基本原理就是把 一个指定范围值内的颜色变为透明或半透明,比如下面的 demo 演示的,看上 ...

  9. filebeat+kafka失败

    filebeat端配置 #----------------------------- Kafka output -------------------------------- output.kafk ...

  10. Python操作Word:常用对象介绍

    前面已经介绍过了试用win32com类库来进行Word开发,系列文章<Python操作Word>是继承了前面的文章,所以,你应该先查看前面的文章,其实只有两篇,文章地址列在最下面的参考资料 ...