集合类补充案例.docx
- 文档编号:28317914
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:45
- 大小:34.93KB
集合类补充案例.docx
《集合类补充案例.docx》由会员分享,可在线阅读,更多相关《集合类补充案例.docx(45页珍藏版)》请在冰豆网上搜索。
集合类补充案例
第七章集合
案例71Collection接口对集合得操作
一、案例描述
1、考核知识点
编号:
名称:
Collection接口
2、练习目标
Ø掌握Collection接口中方法得使用
3、需求分析
Collection就是所有单列集合得父接口,在Collection中定义了单列集合(List与Set)通用得一些方法。
为了让初学者熟悉Collection接口中得常用方法,本案例将演示Collection接口中得方法对集合进行操作来学习方法得使用。
4、设计思路(实现原理)
1)编写一个类Example01
2)在类中定义两个Collection集合,并向其中一个集合中添加数据
3)用Collection接口中得方法对定义得两个集合进行各种操作
二、案例实现
importjava、util、*;
publicclassExample01{
publicstaticvoidmain(String[]args){
//定义集合
Collectioncol1=newArrayList;
col1、add("123abc");
col1、add(123);
col1、add(34、121);
Collectioncol2=newArrayList;
//判断集合就是否为空
booleana=col1、isEmpty;
booleanb=col2、isEmpty;
"col1集合就是否为空:
"+a);
"col2集合就是否为空:
"+b);
//将集合col1中得元素添加到col2中
col2、addAll(col1);
"col1集合中得元素添加到col2后,col2集合:
"+col2);
//获取两个集合得交集
booleanc=col1、retainAll(col2);
"col1与col2集合就是否有交集:
"+c);
//清除集合col2中得元素
col2、clear;
"清除集合col2中得元素后,col2集合:
:
"+col2);
//获取集合中元素得个数
intsize=col1、size;
"col1集合中元素得个数:
"+size);
}
}
运行结果如图71所示。
图7-1运行结果
三、案例总结
1、Collection就是所有单列集合得父接口,因此在Collection中定义了单列集合(List与Set)通用得一些方法,这些方法可用于操作所有得单列集合,如表71所示。
表71Collection中得方法
方法声明
功能描述
booleanadd(Objecto)
向集合中添加一个元素
booleanaddAll(Collectionc)
将指定Collection中得所有元素添加到该集合中
voidclear
删除该集合中得所有元素
booleanremove(Objecto)
删除该集合中指定得元素
booleanremoveAll(Collectionc)
删除指定集合中得所有元素
booleanisEmpty
判断该集合就是否为空
booleancontains(Objecto)
判断该集合中就是否包含某个元素
booleancontainsAll(Collectionc)
判断该集合中就是否包含指定集合中得所有元素
Iteratoriterator
返回在该集合得元素上进行迭代得迭代器(Iterator),用于遍历该集合所有元素
intsize
获取该集合元素个数
2、在编译案例时,会得到如图72所示得警告,意思就是说在使用ArrayList集合时并没有显示得指定集合中存储什么类型得元素,会产生安全隐患,这涉及到泛型安全机制得问题。
此警告对程序输出结果没有影响。
图7-2编译警告
3、在编写程序时,不要忘记使用importjava、util、*;语句导包,否则程序将会编译失败,显示类找不到。
案例72List接口得特有方法
一、案例描述
1、考核知识点
编号:
名称:
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)方法增加一个元素
二、案例实现
importjava、util、*;
publicclassExample02{
publicstaticvoidmain(String[]args){
Listlist=newArrayList;
list、add("abc1");//add方法添加元素
list、add("abc2");
list、add("abc3");
list、add("abc4");
;
ListnewList=list、subList(0,2);//subList方法获取集合得前两个元素
;
Objecto=list、set(0,"haha");//set方法修改指定位置元素值为haha
;
;
list、add(0,"QQ");//add方法在集合指定位置增加一个元素QQ
;
}
}
运行结果如图73所示。
图7-3运行结果
三、案例总结
1、在List集合中允许出现重复得元素,所有得元素就是以一种线性方式进行存储得,在程序中可以通过索引来访问集合中得指定元素。
另外,List集合还有一个特点就就是元素有序,即元素得存入顺序与取出顺序一致。
2、List作为Collection集合得子接口,不但继承了Collection接口中得全部方法,而且还增加了一些根据元素索引来操作集合得特有方法,如表72所示。
表72List接口中得常见方法
方法声明
功能描述
voidadd(intindex,Objectelement)
将元素element插入在List集合得index处
booleanaddAll(intindex,Collectionc)
将集合c所包含得所有元素插入到List集合得index处
Objectget(intindex)
返回集合索引index处得元素
Objectremove(int index)
删除index索引处得元素
Objectset(int index,Object element)
将索引index处元素替换成element对象,并将替换后得元素返回
intindexOf(Object o)
返回对象o在List集合中出现得位置索引
intlastIndexOf(Object o)
返回对象o在List集合中最后一次出现得位置索引
ListsubList(int fromIndex,int toIndex)
返回从索引fromIndex(包括)到toIndex(不包括)处所有元素集合组成得子集合
案例73ArrayList集合得存取
一、案例描述
1、考核知识点
编号:
名称:
ArrayList集合
2、练习目标
Ø了解ArrayList集合得特点
Ø掌握对ArrayList集合中元素得存取操作
3、需求分析
ArrayList就是List接口得一个实现类,ArrayList集合中大部分方法都就是从父类Collection与List继承过来得。
为了熟悉ArrayList集合得使用,本案例将演示ArrayList集合得定义、存储元素与取出元素。
4、设计思路(实现原理)
1)编写一个类Example03
2)在类中定义一个ArrayList集合
3)用add方法向集合中添加元素
4)用get方法获取集合中得指定元素,由于ArrayList集合得索引得取值范围就是从0开始得,最后一个索引就是size1。
所以,要获取集合中得第2个元素应该就是get
(1)。
二、案例实现
importjava、util、*;
publicclassExample03{
publicstaticvoidmain(String[]args){
ArrayListarray=newArrayList;
array、add("lisi");
array、add("wangwu");
array、add("jordan");
array、add("jackson");
array、add("white");
;
"第2个元素就是:
"+array、get
(1));
}
}
运行结果如图74所示。
图7-4运行结果
三、案例总结
1、在ArrayList内部封装了一个长度可变得数组对象,当存入得元素超过数组长度时,ArrayList会在
内存中分配一个更大得数组来存储这些元素,因此可以将ArrayList集合瞧作一个长度可变得数组。
2、索引位置为1得元素就是集合中得第二个元素,这就说明集合与数组一样,索引得取值范围就是从0开始得,最后一个索引就是size1,在访问元素时一定要注意索引不可超出此范围,否则会抛出角标越界异常IndexOutOfBoundsException。
3、由于ArrayList集合得底层就是使用一个数组来保存元素,在增加或删除指定位置得元素时,会导致创建新得数组,效率比较低,因此不适合做大量得增删操作。
但这种数组得结构允许程序通过索引得方式来访问元素,因此使用ArrayList集合查找元素很便捷。
案例74LinkedList集合得特殊方法
一、案例描述
1、考核知识点
编号:
名称:
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
二、案例实现
importjava、util、*;
publicclassExample04{
publicstaticvoidmain(String[]args){
LinkedListlink=newLinkedList;
link、addFirst("abc1");//将指定元素插入此集合得开头
link、addLast("haha");//将指定元素添加到此集合得结尾
;//获取但不移除此集合得第一个元素
;//获取但不移除此集合得最后一个元素
;
;//获取并移除此集合得第一个元素
;
;//获取并移除此集合得最后一个元素
}
}
运行结果如图75所示。
图7-5运行结果
三、案例总结
1、LinkedList集合内部维护了一个双向循环链表,链表中得每一个元素都使用引用得方式来记住它得前一个元素与后一个元素,从而可以将所有得元素彼此连接起来。
当插入一个新元素时,只需要修改元素之间得这种引用关系即可,删除一个节点也就是如此。
正因为这样得存储结构,所以LinkedList集合对于元素得增删操作具有很高得效率。
2、在本案例中,所用得方法及其功能具体如下:
1)peekFirst方法用于获取LinkedList集合中得第一个元素,如果此列表为空则返回NULL
2)peekLast方法用于获取LinkedList集合中得最后一个元素,如果此列表为空则返回NULL
3)pollFirst方法用于获取并移除LinkedList集合中得第一个元素,如果此列表为空则返回NULL
4)pollLast方法用于获取并移除LinkedList集合中得最后一个元素,如果此列表为空则返回NULL
5)addFirst方法用于添加LinkedList集合中得第一个元素
6)addLast方法用于添加LinkedList集合中得最后一个元素
案例75Iterator遍历集合元素
一、案例描述
1、考核知识点
编号:
名称:
Iterator接口
2、练习目标
Ø掌握Iterator迭代器得使用
3、需求分析
在程序开发中,经常需要遍历集合中得所有元素。
针对这种需求,JDK专门提供了一个接口Iterator。
为了使初学者熟悉Iterator迭代器得使用,本案例将演示如何使用Iterator迭代器遍历集合中得元素。
4、设计思路(实现原理)
1)编写一个类Example05
2)在类中定义一个List集合,并向集合中添加数据
3)通过调用List集合得iterator方法获得迭代器对象
4)在while循环条件中使用hashNext方法判断集合中就是否存在下一个元素,如果存在,则调用next方法将元素取出,否则说明已到达了集合末尾,停止遍历元素
二、案例实现
定义Example05类,其代码如下:
importjava、util、*;
publicclassExample05{
publicstaticvoidmain(String[]args){
Listlist=newArrayList;
list、add("abc1");//向集合中添加元素
list、add("abc2");
list、add("abc3");
list、add("abc4");
Iteratorit=list、iterator;//获取迭代器对象
while(it、hasNext){//判断就是否还有元素
Objectobj=it、next;//取出元素
;
}
}
}
运行结果如图76所示。
图7-6运行结果
三、案例总结
1、需要注意得就是,在通过next方法获取元素时,必须保证要获取得元素存在,否则,会抛出NoSuchElementException异常。
2、Iterator迭代器对象在遍历集合时,内部采用指针得方式来跟踪集合中得元素,图77演示了Iterator对象迭代元素得过程。
图7-7遍历元素过程图
案例76foreach循环:
简化遍历
一、案例描述
1、考核知识点
编号:
名称:
foreach循环
2、练习目标
Ø掌握使用foreach循环遍历集合与数组
3、需求分析
虽然Iterator可以用来遍历集合中得元素,但写法上比较繁琐,为了简化书写,从JDK5、0开始,提供了foreach循环。
foreach循环用于遍历数组或集合中得元素。
为了让初学者能熟悉foreach循环得使用,本案例将演示如何用foreach循环遍历数组与集合中得元素。
4、设计思路(实现原理)
1)编写一个类Example06,
2)在该类中定义一个List集合,向集合中添加四个元素
3)用foreach循环遍历集合中得元素
4)在类中定义一个数组arr,静态初始化数组int[]arr={3,2,6};
5)用foreach循环遍历arr中得元素
二、案例实现
importjava、util、*;
publicclassExample06{
publicstaticvoidmain(String[]args){
//创建list集合
Listlist=newArrayList;
list、add("sv");
list、add("lv");
list、add("mv");
list、add("tv");
"遍历集合中得元素:
");
for(Objectobj:
list){//foreach循环遍历集合中得元素
;
}
//定义数组
int[]arr={3,2,6};
"遍历数组中得元素:
");
for(intx:
arr){//foreach循环遍历数组中得元素
;
}
}
}
运行结果如图78所示。
图7-8运行结果
三、案例总结
1、通过案例可以瞧出,foreach循环在遍历集合时语法非常简洁,没有循环条件,也没有迭代语句,所有这些工作都交给虚拟机去执行了。
foreach循环得次数就是由容器中元素得个数决定得,每次循环时,foreach中都通过变量将当前循环得元素记住,从而将集合中得元素分别打印出来。
2、使用foreach循环遍历集合与数组时,只能访问集合中得元素,不能对其中得元素进行修改。
案例77ListIterator迭代器得特有方法
一、案例描述
1、考核知识点
编号:
名称:
ListIterator接口
2、练习目标
Ø掌握ListIterator接口中特有方法得使用
3、需求分析
ListIterator迭代器就是Iterator得子类,该类在父类得基础上增加了一些特有方法。
为了让初学者能熟悉ListIterator接口中特有方法得使用,本案例将演示如何用ListIterator接口中得方法向集合中插入元素与逆向遍历集合。
4、设计思路(实现原理)
1)编写一个类Example07
2)在该类中定义一个List集合,向集合中添加四个元素
3)用ListIterator接口得add方法向集合中插入一个元素并遍历集合list
4)用ListIterator接口得booleanhasPrevious方法逆向遍历集合
二、案例实现
importjava、util、*;
publicclassExample07{
publicstaticvoidmain(String[]args){
Listlist=newArrayList;
list、add("abc1");
list、add("abc2");
list、add("abc3");
list、add("abc4");
ListIteratorlit=list、listIterator;
while(lit、hasNext){
Objecto=lit、next;
//遍历到abc4元素时,向集合中添加一个元素
if("abc4"、equals(o)){
lit、add("abc5");
}
;
}
//逆向遍历集合
"以下就是逆向遍历");
while(lit、hasPrevious){
;
}
}
}
运行结果如图79所示。
图7-9运行结果
三、案例总结
1、ListIterator迭代器得特有方法,如表73所示。
表73ListIterator迭代器得特有方法
方法声明
功能描述
voidadd(Objecto)
将指定得元素插入列表(可选操作)
booleanhasPrevious
如果以逆向遍历列表,列表迭代器有多个元素,则返回true
Objectprevious
返回列表中得前一个元素
voidremove
从列表中移除由next或previous返回得最后一个元素(可选操作)
2、在本案例中,使用hasPrevious方法判断就是否存在上一个元素,如果存在,则通过previous方法将元素取出,否则,则表示到达了集合得末尾,没有要遍历得元素。
3、在遍历过程中,如果想增加元素同样不能调用集合对象得add方法,此时需要使用ListIterator提供得add方法,否则会出现并发修改异常ConcurrentModificationException。
需要注意得就是,ListIterator迭代器只能用于List集合。
案例78用Enumeration迭代Vector集合
一、案例描述
1、考核知识点
编号:
名称:
Enumeration接口
2、练习目标
Ø掌握如何使用Enumeration迭代器得特有方法遍历Vector集合中得元素
3、需求分析
在JDK1、2以前还没有Iterator接口得时候,遍历集合需要使用Enumeration迭代器接口。
由于很多程序中依然在使用Enumeration,因此了解该接口得用法就是很有必要得。
Vevtor集合就是List接口得一个实现类。
为了让初学者能熟悉Enumeration迭代器得用法,本案例将演示如何用Enumeration迭代器遍历Vector集合。
4、设计思路(实现原理)
1)编写一个类Example08,在该类中定义一个Vector集合v
2)向集合v中添加四个元素
3)用Enumeration迭代器遍历集合v,输出集合中得每一个元素
二、案例实现
importjava、util、*;
publicclassExample08{
publicstaticvoidmain(String[]args){
Vectorv=newVector;//创建Vector集合
v、addElement("秦始皇");
v、addElement("成吉思汗");
v、addElement("朱元璋");
v、addElement("李世民");
Enumeratione=v、elements;
while(e、hasMoreElements){//Enumeration迭代器遍历Vector集合
Stringname
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 集合 补充 案例