第7章集合类补充案例.docx
- 文档编号:4098892
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:15
- 大小:201.09KB
第7章集合类补充案例.docx
《第7章集合类补充案例.docx》由会员分享,可在线阅读,更多相关《第7章集合类补充案例.docx(15页珍藏版)》请在冰点文库上搜索。
第7章集合类补充案例
第七章集合
案例7-1Collection接口对集合的操作
一、案例描述
1、考核知识点
编号:
00107002
名称:
Collection接口
2、练习目标
Ø掌握Collection接口中方式的利用
3、需求分析
Collection是所有单列集合的父接口,在Collection中概念了单列集合(List和Set)通用的一些方式。
为了让初学者熟悉Collection接口中的常常利用方式,本案例将演示Collection接口中的方式对集合进行操作来学习方式的利用。
4、设计思路(实现原理)
1)编写一个类Example01
2)在类中概念两个Collection集合,并向其中一个集合中添加数据
3)用Collection接口中的方式对概念的两个集合进行各类操作
二、案例实现
import.*;
publicclassExample01{
publicstaticvoidmain(String[]args){
;语句导包,不然程序将会编译失败,显示类找不到。
案例7-2List接口的特有方式
一、案例描述
1、考核知识点
编号:
00107003
名称:
List接口
2、练习目标
Ø掌握List接口的常常利用方式的利用
3、需求分析
List作为Collection集合的子接口,不但继承了Collection接口中的全数方式,而且还增加了一些按照元素索引来操作集合的特有方式。
为了熟悉List接口中特有方式的利用,本案例将演示利用List接口中的方式对List集合进行添加、修改等操作。
4、设计思路(实现原理)
1)编写一个类Example02
2)在类中概念两个list集合,并向其中一个集合中添加数据。
3)用subList(intfromIndex,inttoIndex)方式获取集合的一部份
4)用set(intindex,Eelement)方式修改一个元素
5)用add(intindex,Eelement)方式增加一个元素
二、案例实现
import.*;
publicclassExample02{
publicstaticvoidmain(String[]args){
Listlist=newArrayList();
("abc1");
;
publicclassExample03{
publicstaticvoidmain(String[]args){
ArrayListarray=newArrayList();
("lisi");
("wangwu");
("jordan");
("jackson");
("white");
"第2个元素是:
"+
(1));
}
}
运行结果如图7-4所示。
图7-1运行结果
三、案例总结
一、在ArrayList内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,ArrayList会在
内存中分派一个更大的数组来存储这些元素,因此能够将ArrayList集合看做一个长度可变的数组。
二、索引位置为1的元素是集合中的第二个元素,这就说明集合和数组一样,索引的取值范围是从0开始的,最后一个索引是size-1,在访问元素时必然要注意索引不可超出此范围,不然会抛出角标越界异样IndexOutOfBoundsException。
3、由于ArrayList集合的底层是利用一个数组来保留元素,在增加或删除指定位置的元素时,会致使创建新的数组,效率比较低,因此不适合做大量的增删操作。
但这种数组的结构允许程序通过索引的方式来访问元素,因此利用ArrayList集合查找元素很便捷。
案例7-4LinkedList集合的特殊方式
一、案例描述
1、考核知识点
编号:
00107005
名称:
LinkedList集合
2、练习目标
Ø了解LinkedList集合的特点
Ø掌握LinkedList集合的特殊方式的利用
3、需求分析
ArrayList集合在查询元素时速度专门快,但在增删元素时效率较低,为了克服这种局限性,能够利用List接口的另一个实现类LinkedList。
LinkedList集合除对于元素的增删操作具有很高的效率,还专门针对元素的增删操作概念了一些特有的方式。
为了熟悉这些特殊的方式,本案例将演示如何利用LinkedList中的特殊方式对集合进行增删操作。
4、设计思路(实现原理)
1)编写一个类Example04,在该类中概念一个LinkedList集合
2)别离利用addFirst()和addLast()方式向集合中添加元素
3)使用peekFirst()方式获取集合中的第一个元素
4)利用pollFirst()方式获取并移除集合中的第一个元素
5)利用pollLast()方式获取并移除集合中的最后一个元素
6)现在,集合中应该没有元素了,用peekLast()方式获取集合中的最后一个元素,由于集合为空,应该返回NULL
二、案例实现
import.*;
publicclassExample04{
publicstaticvoidmain(String[]args){
LinkedListlink=newLinkedList();
("abc1");
;
publicclassExample05{
publicstaticvoidmain(String[]args){
Listlist=newArrayList();
("abc1");
;
publicclassExample06{
publicstaticvoidmain(String[]args){
;
publicclassExample07{
publicstaticvoidmain(String[]args){
Listlist=newArrayList();
("abc1");
("abc2");
("abc3");
("abc4");
ListIteratorlit=();
while()){
Objecto=();
quals(o)){
("abc5");
}
}
;
publicclassExample08{
publicstaticvoidmain(String[]args){
Vectorv=newVector();
;
publicclassExample09{
publicstaticvoidmain(String[]args){
;
publicclassExample10{
publicstaticvoidmain(String[]args){
;
publicclassExample11{
publicstaticvoidmain(String[]args){
TreeSetts=newTreeSet();
;
publicclassExample13{
publicstaticvoidmain(String[]args){
4)值"林志颖"在集合中存在,所以输出true。
5)因为集合不为空,所以()返回false。
案例7-14遍历Map中所有的键值
一、案例描述
1、考核知识点
编号:
00107014
名称:
HashMap集合
2、练习目标
Ø掌握遍历Map中所有的键值两种方式
3、需求分析
在程序开发中,常常需要掏出Map中所有的键和值。
为了让大家熟悉遍历Map中所有的键值,本案例将演示遍历Map中所有的键值对的两种遍历方式。
4、设计思路(实现原理)
1)编写类Example14,在该类中创建Map集归并向集合中添加元素
2)使用第一种方式,遍历集合元素,先获取键的集合,再获取键所对应的值
3)利用第二种方式,先获取集合中键值对映射关系,再从映射关系中取得键和值
二、案例实现
import.*;
publicclassExample14{
publicstaticvoidmain(String[]args){
;
publicclassExample15{
publicstaticvoidmain(String[]args){
Strings="cbxzbvavdvgd";
ppend("(").append(i).append(")");
}
Stringresult=();
}
}
运行结果如图7-20所示。
图7-2运行结果
三、案例总结
一、在本案例中,演示了TreeMap集合中元素的存储和迭代方式与HashMap相同。
从输出结果能够看出,TreeMap集合中的元素是不重复的,而且依照值的自然顺序进行了排序。
这是因为在TreeMap中是通过二叉树的原理来保证键的唯一性,那个TreeSet集合存储的原理一样,因此TreeMap中所有的键是依照某种顺序排列的。
二、本案例中,在概念TreeMap集合时利用了泛型,即<参数化类型>。
它能够指定该类中方式操作的数据类型,避免在集合存取时会产生的数据类型转化的错误。
案例7-16Proeprties集合的功能
一、案例描述
1、考核知识点
编号:
00107016
名称:
Proeprties集合
2、练习目标
Ø掌握Proeprties集合的存储和遍历方式
3、需求分析
Map接口中还有一个实现类Hashtable,它和HashMap的区别是Hashtable是线程安全的。
Hashtable类有一个子类Properties在实际应用中超级重要,Properties主要用来存储字符串类型的键和值,为了掌握Properties集合的利用,本案例将演示Properties集合中元素的存储,修改和遍历。
4、设计思路(实现原理)
1)编写一个类Example16,创建Proeprties集合对象
2)向Proeprties集合中添加元素
3)遍历Proeprties集合中的元素
二、案例实现
import.*;
publicclassExample16{
publicstaticvoidmain(String[]args){
;
publicclassExample17{
publicstaticvoidmain(String[]args){
;
publicclassExample18{
publicstaticvoidmain(String[]args){
.elements)
将所有指定元素添加到指定collection中
staticvoidreverse(Listlist)
反转指定List集合中元素的顺序
staticvoidshuffle(Listlist)
对List集合中的元素进行随机排序(模拟玩扑克中的“洗牌”)
staticvoidsort(Listlist)
根据元素的自然顺序对List集合中的元素进行排序
staticvoidswap(Listlist,inti,intj)
将指定List集合中i处元素和j处元素进行交换
staticintbinarySearch(Listlist,Objectkey)
使用二分法搜索指定对象在List集合中的索引,查找的List集合中的元素必须是有序的
staticObjectmax(Collectioncol)
根据元素的自然顺序,返回给定集合中最大的元素
staticObjectmin(Collectioncol)
根据元素的自然顺序,返回给定集合中最小的元素
staticbooleanreplaceAll(Listlist,ObjectoldVal,ObjectnewVal)
用一个新的newVal替换List集合中所有的旧值oldVal
案例7-19Arrays类对数组的操作
一、案例描述
1、考核知识点
编号:
00107020
名称:
Arrays工具类
2、练习目标
Ø掌握如何利用Arrays工具类对数组进行操作
3、需求分析
Arrays是一个专门用于操作数组的工具类,其中提供了大量的静态方式。
为了让初学者能熟悉Arrays类中方式的功能和利用,本案例将利用Arrays类中的各类方式对数据进行操作,来学习Arrays工具类对数组进行排序、转换等操作。
4、设计思路(实现原理)
1)编写一个类Example21,在该类中概念一个数组
2)用Arrays类中的sort()方式对数组进行排序
3)用toString()方式将数组转换成字符串,并输出
4)用asList()方式将数组转换成集合
二、案例实现
import.*;
publicclassExample19{
publicstaticvoidmain(String[]args){
Integer[]arr={3,1,6,34,78,9};
//对数组排序
(arr);
//将排序后的数组转换成字符串打印出来
"排序后的数组:
"+(arr));
//将数组转换成集合
List
"数组转换成集合后:
"+array);
}
}
运行结果如图7-25所示。
图7-3运行结果
三、案例总结
一、本案例中,利用Arrays的sort()方式时只需要将数组做为参数传递给sort()方式就可以够,至于内部是怎么进行排序的咱们无需关心。
可见利用那个方式不仅能够大大减少代码的书写量,而且操作简单。
利用Arrays工具类的方式toString(int[]arr)时。
需要注意的是,该方式并非是对Object类toString()方式的重写,只是用于返回指定数组的字符串形式。
二、除本案例中的三种方式,Arrays工具类中还有其他方式,如:
1)利用Arrays的binarySearch(Object[]a,Objectkey)方式查找元素
2)利用Arrays的copyOfRange(int[]original,intfrom,intto)方式拷贝元素
3)利用Arrays的fill(Object[]a,Objectval)方式填充元素
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 集合 补充 案例