Java集合框架总结
Java的集合框架总结
JAVA集合框架
一、集合框架
在实际开发中,需要将对象根据不同的需求而存储在特定的数据结构容器中。但是数组虽然是一种用来存储数据的数据结构,但是它的局限性很低,很难满足各种的需求,所以JDK出现了用来满足各种需求的框架——集合框架。
“集合框架”主要由一组用来操作对象的接口组成。不同接口描述一组不同数据类型。 常见的集合类有:1)实现Collection接口的:List接口、Set接口。
2)实现Map接口的。
二、Collection接口
Collection接口表示了如何把一组对象作为它的元素。JDK没有直接提供Collection接口的实现,Collection接口的实现依赖于两个继承自自己的接口:Set和List。所有通过实现Collection接口的子接口的类应该提供两个标准的构造器:一个不需要参数的构造器,用来创建一个空的集合,另外一个需要一个类型作为参数的构造器,用来创建一个和参数的类型相同的元素的集合。
int size():返回这个集合中的元素的数量。
boolean isEmpty():返回集合是否包含元素,如果没有的话,返回true。 boolean contains(E e):如果这个集合包含某个指定的元素,返回true。
Iterator<E> iterator():返回这个集合中的所有元素的迭代。
boolean add(E e):向集合中添加新的元素,如果添加成功,返回true。
boolean remove(E e):从集合中删除指定元素,如果删除成功,返回true。
boolean containsAll(Collection<?> c):这个集合是否包含指定集合中的所有的元素。 boolean addAll(Collection<? extends E> c):添加指定的集合中的所有元素到这个集合中。
boolean removeAll(Collection<?> c):删除当前集合中与给定集合相同的元素。在这个调用返回之后,这个集合将不包含和指定的集合一样的元素。
boolean retainAll(Collection<?> c):从这个集合中删除所有不包含在指定的集合中的所有元素。
<T> T[] toArray(T[] a):返回一个包含集合中所有的元素的数组。
void clear():从集合中删除所有的元素。
boolean equals(Object obj):比较这个集合和指定对象是否相等。
int hashCode():返回这个集合的哈希值。
三、List接口
List 接口继承了 Collection 接口,用于定义一个允许重复项的有序集合。可以将List理解为存放对象的数组,只不过其元素个数可以动态的增加或者减少。该接口不但能够对列表的一部分进行处理,还添加了面向位置的操作。
面向位置的操作包括插入某个元素或 Collection 的功能,还包括获取、除去或更改元素的功能。在 List 中搜索元素可以从列表的头部或尾部开始,如果找到元素,还将报告元素所在的位置 :
void add(int index, Object element): 在指定位置index上添加元素element。
boolean addAll(int index, Collection c): 将集合c的所有元素添加到指定位置index。 Object get(int index): 返回List中指定位置的元素。
int indexOf(Object o): 返回第一个出现元素o的位置,否则返回-1。
int lastIndexOf(Object o) :返回最后一个出现元素o的位置,否则返回-1。
Object remove(int index) :删除指定位置上的元素。
Java的集合框架总结
Object set(int index, Object element) :用元素element取代位置index上的元素,并且返回旧的元素。
在“集合框架”中有两种常规的 List 实现ArrayList 和 LinkedList,分别用动态数组和链表的方式实现List接口。可以认为ArrayList和LinkedList的方法在逻辑上完全一样,只是在性能上有一定的差别。如果要支持随机访问,而不必在除尾部的任何位置插入或除去元素,那么,ArrayList 提供了可选的集合。但如果,您要频繁的从列表的中间位置添加和除去元素,而只要顺序的访问列表元素,那么,LinkedList 实现更好。
1)LinkedList类
LinkedList类——链表实现的List,在删除或插入时只需改变链表“指针”,即可实现。
(1) void addFirst(Object o): 将对象o添加到列表的开头
void addLast(Object o):将对象o添加到列表的结尾
(2) Object getFirst(): 返回列表开头的元素
Object getLast(): 返回列表结尾的元素
(3) Object removeFirst(): 删除并且返回列表开头的元素
Object removeLast():删除并且返回列表结尾的元素
(4) LinkedList(): 构建一个空的链接列表
LinkedList(Collection c): 构建一个链接列表,并且添加集合c的所有元素
“使用这些新方法,您就可以轻松的把 LinkedList 当作一个堆栈、队列或其它面向端点的数据结构。”
2)ArrayList类
ArrayList类——动态数组实现的List,可以通过下标迅速的索引到对应的元素,但在删除和移动时移动较多元素。
ArrayList类封装了一个动态再分配的Object[]数组。每个ArrayList对象有一个capacity。这个capacity表示存储列表中元素的数组的容量。当元素添加到ArrayList时,它的capacity在常量时间内自动增加。
在向一个ArrayList对象添加大量元素的程序中,可使用ensureCapacity方法增加capacity。这可以减少增加重分配的数量。
(1) void ensureCapacity(int minCapacity): 将ArrayList对象容量增加minCapacity
(2) void trimToSize(): 整理ArrayList对象容量为列表当前大小。程序可使用这个操作减少ArrayList对象存储空间。
四、List高级—数据结构:Queue队列
队列是常用的数据结构,可以将(Queue)队列看成特殊的线性表,队列限制了对线性表的访问方式,即只能从线性表的一段添加(offer)元素,从另一端取出(poll)元素。 队列遵循先进先出(FIFO)原则。
JDK中提供了Queue接口,同时使得LinkedList实现该接口(Queue经常要进行插入和删除的操作,而LinkedList在这方面效率最高)。
Queue接口中的主要方法:
Boolean offer(E e) 讲一个对象添加到队尾,添加成功则返回true。
E pool() 从队首删除并返回一个元素。
E peek() 返回队首的元素(但并不删除)。
五、List高级—数据结构:Deque栈
栈也是常用的数据结构,栈(Deque)则是Queue的子接口,定义了所谓的“双端队列”,即从队列的两端分别可以入队(offer)和出队(poll),如果将Deque限制为只能从一段入队
Java的集合框架总结
和出队,则可实现“栈(Stack)”的数据结构,对于栈而言,入栈称之为push,出栈称为pop。 栈遵循先进后出(FILO)原则。
Deque常用的方法:
E push() 压入,向栈中存入数据。
E pop() 取出,从栈中取出数据。
E peek() 获取栈顶位置的元素,但不取出。
六、Set接口
Set 接口也是Collection 接口的子接口,但是与Collection 或List 接口不同的是,Set接口中不能加入重复的元素,是因为Set判断两个对象相同不是使用==运算符,而是根据equals方法。即两个对象用equals方法比较返回true,Set就不能接受两个对象。同时Set集合里多个对象之间没有明显的顺序。
其实Set具有与Collection完全一样的接口,除了注释不一样其他都一样,也就是Set根本没有对Collection扩展,只是对add,equals,hashCode的定义说明不 …… 此处隐藏:3345字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [专业资料]《蜜蜂之家》教学反思
- [专业资料]过去分词作定语和表语1
- [专业资料]苏州工业园区住房公积金贷款申请表
- [专业资料]保安管理制度及处罚条例细则
- [专业资料]2018年中国工程咨询市场发展现状调研及
- [专业资料]2015年电大本科《学前教育科研方法》期
- [专业资料]数字信号处理实验 matlab版 离散傅里叶
- [专业资料]“十三五”重点项目-虎杖白藜芦醇及功
- [专业资料]2015-2020年中国竹木工艺市场需求及投
- [专业资料]国际贸易理论与实务作业五:理论案例分
- [专业资料]财政部修订发布事业单位会计制度
- [专业资料]BCA蛋白浓度测定试剂盒(增强型)
- [专业资料]工程进度总计划横道图模板(通用版)
- [专业资料]七年级地理同步练习(天气与气候)
- [专业资料]X光安检机介绍火灾自动报警系统的组成
- [专业资料]衢州市人民政府办公室关于印发衢州市区
- [专业资料]经济全球化及其影响[1]
- [专业资料]质粒DNA限制性酶切图谱分析
- [专业资料]国家安全人民防线工作“六项”制度
- [专业资料]劳动力投入计划及保证措施
- 电子账册联网监管培训手册
- 人教版语文七年级上第1课《在山的那边
- 对我区担保行业发展现状的思考与建议
- 平面四边形网格自动生成方法研究
- 2016年党课学习心得体会范文
- 如何设置电脑定时关机
- 全球最美人妖排行榜新鲜出炉
- 社会实践调查报告及问卷
- Visual Basic习题集
- 《鱼我所欲也》课件2
- 浙江省会计从业资格考试试卷
- 全遥控数字音量控制的D 类功率放大器资
- 鞍钢宪法与后福特主义
- 电表的改装与校准实验报告(1)
- 2014年高考理科数学真题解析分类汇编:
- Windows 7 AIK 的使用
- 风电场全场停电事故应急处置方案
- 化工原理选填题题库(下)
- 关于产学研合作教育模式的学习与思考
- 西安先锋公馆项目前期定位报告




