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,并在比较文档时使用等价的引用 |
java中的最重要的 集合框架的更多相关文章
- Java 学习(16):集合框架
Java 集合框架 早在Java 2中之前,Java就提供了特设类.比如:Dictionary, Vector, Stack, Properties 这些类用来存储和操作对象组. 虽然这些类都非常有 ...
- java中Comparator的用法 -- 实现集合和数组排序
在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标. 接下来我们模拟下在集合对象中对日期属性进行排序 一.实体类Step package com.l ...
- 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合
不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...
- java 面向对象编程-- 第15章 集合框架
1. 集合特点:元素类型不同.集合长度可变.空间不固定 2. java中对一些数据结构和算法进行了封装即集合.集合也是一种对象,用于存储.检索.操作和传输对象. 3. JCF(Java Coll ...
- Java编程练习(四)——集合框架应用
Java集合框架小应用之扑克牌小游戏 学习了Java集合框架之后,我写了一个扑克牌小游戏来巩固知识.学习之余的练习之作,有不足之处还得多多指教了~(*/ω\*) 扑克牌小游戏背景: 1. 创建一副扑克 ...
- Java高级特性 第1节 集合框架和泛型
Java中,存储多个同类型的数据,可以用数组来实现,但数组有一些缺陷: 数组长度固定不变,布恩那个很好的适应元素数量动态变化的情况 可以通过数组.length获取数组长度,却无法直接获取数组中实际存储 ...
- Java学习笔记【九、集合框架】
集合框架设计的目标: 高性能. 允许不同类型的集合,以类似的方式工作,有互操作性. 对一个集合的扩展和适应必须简单. 集合框架包含: 接口:代表集合的抽象数据类型. 实现(类):具体实现(ArrayL ...
- Java SE 核心 II【Collection 集合框架】
Collection集合框架 在实际开发中,需要将使用的对象存储于特定数据结构的容器中.而 JDK 提供了这样的容器——集合框架,集合框架中包含了一系列不同数据结构(线性表.查找表)的实现类.集合的引 ...
- java oop第07章_集合框架
一. 什么是集合: 在Java中提供了一些可以保存同一数据类型的数据集称为集合,就是规定了一些集合的规范(接口.抽象类.实现类)及方法, 方便我们程序在保存数据时进行增.删.改.查操作,编程更加高效. ...
随机推荐
- 转 springboot 监控点 简介
Spring Boot Actuator监控端点小结 2016-12-24 翟永超 Spring Boot 被围观 7973 次另一篇简单介绍: HTTP://BLOG.720UI.COM/20 ...
- 让 Node.js 支持 ES6 的语法
为了让 Node.js 支持 ES6 的语法, 需要使用 Babel. 安装 es-checker 在使用 Babel 之前 , 我们先检测一下当前 node 对 es6 的支持情况. 在命令行下执行 ...
- with(上下文的用法)以及其他知识点
一.上下文 class Sxw(object): def __enter__(self): '''进入''' print("你好啊") def __exit__(self, exc ...
- 利用ngModel相关属性及方法自定义表单验证指令
这是一个只能输入偶数的验证指令
- [原]零基础学习SDL开发之移植SDL2.0到Android
在[原]SDL开发教程我们知道了如何在pc下使用SDL进行开发,在android上面是否一样可以使用呢?答案是肯定的. 下面我们进行移植SDL到Android,这里都是基于SDL最新版进行移植的,在E ...
- 关于Safe DOG的文件上传bypass
Author:倾旋payloads@aliyun.com本文由科拉实验室成员倾旋原创文章 Part 1 分析 此文主要研究安全狗的数据包分析功能,由于很多人都认为安全狗是通过正则去匹配的,那么暂且那么 ...
- Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解<转>
简介: handler method 参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主要讲解常用类型) A.处理requet uri 部分(这里指uri templat ...
- span和img标签对齐
html代码 <li> <span class="left_item">在线</span> <img class="right_ ...
- 搭建自己的GitHub Pages
本文记录博主使用Win 10操作系统和Jekyll 3.1.2搭建GitHub Pages的过程.希望能帮助到相同有需要的朋友. 基本需求 GitHub账号及一个命名为{GitHub昵称}.githu ...
- gpio 灯的对应关系
1 点灯验证通过: GPIO160 TX1-LED GPIO161 RX1-LED GPIO163 TX2-LED GPIO164 RX2-LED GPIO ...