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中提供了一些可以保存同一数据类型的数据集称为集合,就是规定了一些集合的规范(接口.抽象类.实现类)及方法, 方便我们程序在保存数据时进行增.删.改.查操作,编程更加高效. ...
随机推荐
- 【实用代码片段】将json数据绑定到html元素 (转)
jQuery扩展 jQuery.fn.extend({ 'jsonBind':function(json){ var dom=this; dom.find('[json-bind]').each(fu ...
- C# WINFORM判断程序是否运行,且只能运行一个实例(转)
判断程序是否已经运行,使程序只能运行一个实例有很多方法,下面记录两种, 方法1:线程互斥 static class Program { private static System.Threading. ...
- Python操作redis系列以 哈希(Hash)命令详解(四)
# -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1. Hset 命令用于 ...
- mysql lower_case_table_names ---- 一律把表名处理为小写
一.从操作系统说起: 1.我们知道mysql 是跨平台的.它可以在许多平台上运行如windows .linux.unix(mac).linux 是类unix的, 但是windows和linux就有非常 ...
- 如何在IIS7或IIS7.5中导入导出站点及应用程序池. -摘自网络
为实现负载平衡,我们可能会使用多个WEB服务器,也就会需要给多个IIS配置同样的站点和应用程序池.那么我们需要一个一个的重新建吗?当然不用,我们只需要一些简单的命令就可以在IIS7(Windows S ...
- mysql_use_result & mysql_store_result & MYSQLI_ASYNC
博文一 : 在使用 mysql_query() 进行一次查询后,一般要用这两个函数之一来把结果存到一个 MYSQL_RES * 变量中. 两者的主要区别是,mysql_use_result() 的结果 ...
- spark 学习(二) RDD及共享变量
声明:本文基于spark的programming guide,并融合自己的相关理解整理而成 Spark应用程序总是包括着一个driver program(驱动程序),它运行着用户的main方 ...
- 【Android】12.6 利用Intent实现记事本功能(NotePad)
分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 这个例子演示如何实现一个简单的记事本功能. 该例子提前使用了后面章节将要介绍的SQLLite数据库. 二.示例-c ...
- tornado长轮询
1.什么是长轮询顾名思义,长轮询就是不停循环请求服务器,获取最新信息.长轮询分为两类:1)浏览器以固定时间间隔向服务器发送请求缺点是轮询频率要足够快,但又不能太频繁,否则当成百上千个客户端不断请求,会 ...
- iOS 关于图片地理位置隐私信息的分析和读取
今天突然想到微信朋友圈发照片,涉及个人隐私的地理位置是否外泄.因为iphone拍照的照片都会带有地理位置等信息,我们先来实现怎么读取里面的安全信息,然后再来分析 #import "ViewC ...