- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
集合框架
(时间:4次课,8学时)
第9章 集合框架
9.1 集合概述及API
9.2 Collection接口和Iterator接口
9.3 Set接口及常用实现类
9.4 List接口及常用实现类
9.5 Map接口及常用实现类
9.6 遗留集合类
9.7 排序集合
9.8 集合工具类Collections类
9.9 集合类的线程安全问题
9.1.1 集合概述
集合:Java SE API所提供的一系列类(java.util包内)的实例,可以用于动态存放多个对象。
Java Collections Framework图如下:
9.1.2 集合API
Collection接口——声明了一组管理它所存储元素的方法。常用子接口:
Set接口:存放的元素不包含重复的集合接口
List接口:存放的元素有序且允许有重复的集合接口
说明:
“元素”-对象,实例
“重复”-两个对象通过equals相等
“有序”-元素存入的顺序与取出的顺序相同
Map接口——定义了存储“键(key)-值(value)映射对”的方法。
9.2.1 Collection接口
Collection接口中定义的方法:
int size(); 返回此collection中的元素数。
boolean isEmpty(); 判断此collection中是否包含元素。
boolean contains(Object obj); 判断此collection是否包含指定的元素。
boolean contains(Collection? c); 判断此collection是否包含指定collection中的所有元素。
boolean add(E element); 向此collection中添加元素。
boolean addAll(Collection? extends E c);将指定collection中的所有元素添加到此collection中
boolean remove(Object element); 从此collection中移除指定的元素。
boolean removeAll(Collection? c); 移除此collection中那些也包含在指定collection中的所有元素。
void clear(); 移除些collection中所有的元素。
boolean retainAll(Collection? c); 仅保留此collection中那些也包含在指定collection的元素。
Iterator iterator(); 返回在此collection的元素上进行迭代的迭代器。
Object[] toArray(); 把此collection转成数组。
9.2.2 Iterator接口
Iterator对象称作迭代器,用以方便的实现对集合内元素的遍历操作。Iterator接口中定义了如下方法:
boolean hasNext(); //判断游标右边是否有元素
Object next() ; //返回游标右边的元素并将游标移动到下一个位置
void remove(); //删除游标左面的元素
凡是能用 Iterator 迭代的集合都可以用JDK5.0中增强的for循环来更简便的遍历。
CollectionString coll = ...;
for(String str : coll){
System.out.println(str);
}
9.3 Set接口及常用实现类
Set接口介绍
HashSet实现类
LinkedHashSet实现类
9.3.1 Set接口
Set接口没有提供Collection接口额外的方法,但实现Set接口的集合类中的元素是不可重复的。
Set集合与数学中“集合”的概念相对应。
JDK API中所提供的Set集合类常用的有:
HashSet
LinkedHashSet
9.3.2 HashSet
HashSet:不保存元素的存入顺序。
HashSet根据元素的哈希码进行存放,取出时也可以根据哈希码快速找到。
使用示例
Set存放对象的原理
存对象时:
根据每个对象的哈希码值(调用hashCode()获得)用固定的算法算出它的存储索引,把对象存放在一个叫散列表的相应位置(表元)中:
如果对应的位置没有其它元素,就只需要直接存入。
如果该位置有元素了,会将新对象跟该位置的所有对象进行比较(调用equals()),以查看是否已经存在了:还不存在就存放,已经存在就直接使用。
取对象时:
根据对象的哈希码值计算出它的存储索引,在散列表的相应位置(表元)上的元素间进行少量的比较操作就可以找出它。
Set系的集合存、取、删对象都有很高的效率。
对于要存放到Set集合中的对象,对应的类一定要重写equals()和hashC
您可能关注的文档
最近下载
- 高中物理临界问题.ppt VIP
- 某某大学各岗位廉政风险点及防控措施一览表(最新最全面版本) .pdf VIP
- 对招标项目设计的特点及关键性技术问题的对策措施;.doc VIP
- 传承非遗文化秧歌知识文化科普讲座主题班会PPT课件.pptx VIP
- 2025年内蒙古时事政治考试试卷带解析必考题.docx VIP
- 人教版数学三年级下册单元试卷【1-8合集,含答案】.pdf VIP
- 2025年内蒙古时事政治考试试卷带解析参考答案.docx VIP
- (答案)奥赛经典-奥林匹克数学中的几何问题---习题与讲解(第1-2章).pdf VIP
- 奥赛经典奥林匹克数学中的几何问题.pdf VIP
- 2025国家能源集团新疆哈密能源化工有限公司社会招聘(51人)笔试参考题库附答案解析.docx VIP
文档评论(0)