day07迭代器增强for泛型.docx

上传人:b****1 文档编号:2397119 上传时间:2022-10-29 格式:DOCX 页数:13 大小:31.65KB
下载 相关 举报
day07迭代器增强for泛型.docx_第1页
第1页 / 共13页
day07迭代器增强for泛型.docx_第2页
第2页 / 共13页
day07迭代器增强for泛型.docx_第3页
第3页 / 共13页
day07迭代器增强for泛型.docx_第4页
第4页 / 共13页
day07迭代器增强for泛型.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

day07迭代器增强for泛型.docx

《day07迭代器增强for泛型.docx》由会员分享,可在线阅读,更多相关《day07迭代器增强for泛型.docx(13页珍藏版)》请在冰豆网上搜索。

day07迭代器增强for泛型.docx

day07迭代器增强for泛型

反馈:

***讲下split

publicString[]split("符号");//

如果符号比较特殊,用到了正则表达式中特殊含义的符号需要转译在Java中使用\\.

比如:

\\.+一个以上连续任意个.都会被匹配到

第7天_面向对象(集合)

1.集合的介绍

一个变量只能存储一个值,当出现大量的变量用来存储数据的时候

这时候我们想到数组,但是数组有问题?

数组的定长的!

!

!

!

所以我们用到了集合,而集合是变长

a.集合的特点和作用

集合最大的特点:

长度随着元素个数的增加而增加(javascript中数组是可变)

作用:

存储大量的对象

b.集合框架的由来

集合框架的根接口是Collection接口

2.集合框架**********

a.集合框架体系(见图)

3.Collection接口中定义的方法*********

记住:

只要是容器,他的方法增删改查

增加:

publicbooleanadd(Ee);返回值表示是否添加成功

删除:

publicbooleanremove(Objectobj);返回值表示是否删除成功

修改:

没有

获取:

publicintsize();长度

其他方法:

publicvoidclear();//清空集合,把集合中元素全删除,但是集合还是存在的

把集合置为null;//把整个集合丢了

publicbooleancontains(Objecto);//判断集合中是否包含某个元素

publicObject[]toArray();//把集合转成数组

publicbooleanisEmpty();//判断集合是否为空,底层size()==0

4.迭代器

迭代器属于什么类型?

Iterator类型

迭代器Iterator中常用的两个方法

PublicbooleanhashNext();//判断集合还有没有元素

Public类型Next();//读取这个元素

获取集合的迭代器对象:

Iterator<和集合一样的类型>it=集合.iterator();

遍历集合步骤:

1.创建对象集合对象(自带了一个Iterator对象)

2.获取到Iterator对象

Iteratorit=c.iterator();//面向接口编程

3.遍历集合方法:

方法一:

while(it.hashNext()){

和集合一样的类型变量名=it.next();

syso(变量名)

}

并发修改异常:

不能在迭代器遍历集合的过程中添加或者删除元素(不能做对集合长度有影响的操作)

方法二:

foreach,然后快捷键alt+/

 

遍历集合:

while(it.hashNext()){

和集合一样的类型变量名=it.next();

syso(变量名)

}

并发修改异常:

不能在迭代器遍历集合的过程中添加或者删除元素(不能做对集合长度有影响的操作)

例如:

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

//1.创建对象集合对象(自带了一个Iterator对象)

//用多态接收

Collectionc=newArrayList();

//添加几个数据

c.add("itcast");

c.add("alibaba");

c.add("tencent");

c.add("sohu");

c.add("netease");

//2.获取到Iterator对象

Iteratorit=c.iterator();//面向接口编程

//3.a.问有没有下一个元素

while(it.hasNext()){

Strings=it.next();

System.out.println(s);

}

//4.但是如果it的hasNext返回值是false

//Stringnext=it.next();不能再取,因为集合中没有下一个元素了

}

5.并发修改异常;

/**

*使用Iterator对象遍历集合,

*如果出现”itcast”字符串,

*那么向集合中添加一个大写的”ITCAST”字符串

*

*这时候出现了一个异常:

Concurrent(并发)Modification(修改)Exception(异常)

*

*解释这个异常出现的原因:

Java规定集合在用迭代器遍历的过程中,不能添加/删除元素(不能修改和长度有关)

*

*原因:

迭代器中”记忆”的集合长度与集合中实际长度不同,而导致出现索引与实际元素不符甚至无限循环的情况发生。

*/

例如:

publicclassConcurrentModificationExceptionDemo{

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

//1.创建集合并且添加数据

Collectionc=newArrayList();

c.add("baidu");

c.add("itcast");

c.add("tencent");

c.add("sohu");

c.add("google");

//2.遍历集合(用迭代器)

Iteratorit=c.iterator();//迭代器就会记住集合的长度是5

while(it.hasNext()){

Stringnext=it.next();

//3.判断是不是"itcast"

if("itcast".equals(next)){

//4.向集合中添加一个"ITCAST"

c.add("ITCAST");//实际长度变了变成6了

}

}

}

5.增强for循环

增强for循环是JDK1.5出现的新特性:

作用:

专门用来快速遍历数组或者集合

格式:

for(数据类型变量:

数组/集合){

每一次循环自动从数组或者集合中取出一个元素,保存到变量中

我们只要操作这个变量即可

}

原理:

增强for循环底层的原理是迭代器,同样不能在使用增强for循环遍历过程中添加或者删除元素

缺点:

使用增强for循环是不能知道是第几个元素

增强for循环什么时候用合适:

只操作元素内容,不关心元素下标的时候

例如:

/*

*使用增强for循环遍历数组和集合

*

*for(数据类型变量:

数组/集合){

*每一次循环自动从数组或者集合中取出一个元素,保存到变量中

*我们只要操作这个变量即可

*}

*

*

*/

publicclassStrongForDemo{

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

//1.遍历数组

int[]nums={1,2,34,5,6};

//2.用增强for循环遍历数组

for(intnum:

nums){

//每次循环都会从数组中取出一个元素,保存到num中

System.out.println(num);

}

//3.遍历集合

Collectionc=newArrayList();

c.add

(1);

c.add

(2);

c.add(3);

c.add(4);

//4.遍历

for(inti:

c){//自动拆装箱

//System.out.println(i);

if(i==2){

c.add(200);

}

}

//JDK1.8中一句话,lambda表达式

}

}

6.泛型的介绍

0.泛型的介绍:

什么是泛型:

泛泛的类型,是一种不确定的类型

泛型的格式:

,,,

比如;ArrayList

1.泛型的好处:

提高安全性

将运行时期的ClassCastException,转移到了编译时期变成了编译失败。

避免了类型强转的麻烦

例如:

/**

*泛型的好处:

*1.不使用泛型

*

*2.使用泛型

*

*@authoryingpeng

*

*/

publicclassGenericDemo{

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

generic();

}

//不使用泛型

publicstaticvoidnoGeneric(){

//什么叫不使用泛型,就是不写

ArrayListarr=newArrayList();

//不写泛型那么arr中可以存任何的引用类型

arr.add

(1);

arr.add("java");

arr.add(true);

arr.add(1.5F);

arr.add(1.5);

//遍历

//这时候程序就出现了安全问题

for(Objectobj:

arr){

Stringi=(String)obj;

System.out.println(i);

}

}

//使用泛型

publicstaticvoidgeneric(){

//使用泛型指的是写上<数据类型>

ArrayListarr=newArrayList();

//添加数据

arr.add("1");

arr.add("java");

arr.add("3.14");

arr.add("true");

//遍历

for(Strings:

arr){

System.out.println(s);

}

}

}

2.泛型的定义[了解]

探究:

泛型中的的含义,代表不确定的类型

泛型的本质:

它是一个变量,可以接收一种数据类型

泛型用法比较广,可以用在类上,方法上,接口上

a.泛型类:

是指泛型用在类上,比如ArrayList

泛型类上的泛型什么时候确定?

创建该类对象的时候,我们可以确定

b.泛型方法:

是指泛型用在方法上

泛型方法上的泛型什么时候确定?

调用该方法并且传入参数的时候我们可以确定

c.泛型接口:

是指泛型用在接口上,比如:

Collection

3.泛型接口上的泛型什么时候确定?

1.在实

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1