Java学习笔记28(集合框架二:Iterator迭代器)
2018-06-18 03:53:07来源:未知 阅读 ()
Iterator接口,翻译成中文是迭代器
迭代器的概念通俗解释:
java中有很多的集合,内部有各种存储方法,取出的方式也各不相同,是否可以有一种通用的方式来获取呢?
这种方式类似for循环遍历,
通用获取方式:取出元素之前判断集合中有没有这个元素,如果有,就取出来;继续判断,如果还存在那么继续取出,直到全部取出为止,这种取出就是迭代
迭代器的实现:
(将ArrayList集合换成其他的集合,也可以实现)
package demo; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class IteratorDemo { public static void main(String[] args) { Collection<String>c1 = new ArrayList<String>(); c1.add("abc1"); c1.add("abc2"); c1.add("abc3"); c1.add("abc4"); Iterator<String> it1 = c1.iterator(); boolean b1 = it1.hasNext();//是否有元素可以被取出 System.out.println(b1);//true //获取元素 while(it1.hasNext()){ String s = it1.next(); System.out.println(s); } } }
集合迭代中的转型:
建议加入类型,但是不加入也可以执行:
package demo; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class CollectionDemo { public static void main(String[] args) { //集合可以存储任意类型的对象 //集合中,不指定存储的数据类型,也可以存储 Collection c1 = new ArrayList(); c1.add("abc"); c1.add("def"); Iterator it1 = c1.iterator(); while(it1.hasNext()){ //it.next获取Object类型,强制转换 String s1 = (String)it1.next(); System.out.println(s1.length()); } } }
利用迭代器的原理,在JDK1.5之后出现了增强for循环:
增强for循环遍历数组示例:
package demo; //增强for循环,有固定格式 //好处:代码少了,方便遍历 //弊端:没有索引,不能操作容器里面的元素 public class ForEachDemo { public static void main(String[] args) { function1(); function2(); } public static void function1(){ int[] arr = {3,2,5,4,8,9,6}; //遍历输出 for(int i :arr){ System.out.println(i); } } public static void function2(){ //遍历的时候,可以调用对象的方法 String[] str1 = {"abc","def","java"}; for(String s:str1){ System.out.println(s); System.out.println(s.length()); } } }
增强for循环遍历集合示例:
package demo; import java.util.ArrayList; //增强for循环,有固定格式 public class ForEachDemo { public static void main(String[] args) { function(); } public static void function() { ArrayList<String> array1 = new ArrayList<String>(); array1.add("abcd"); array1.add("java"); for (String s : array1) { System.out.println(s); } } }
迭代器并发修改异常:
在面试中偶尔会遇到,这里做简单介绍
package demo; import java.util.ArrayList; import java.util.Iterator; //迭代器的并发修改异常 //即不允许在迭代过程中修改集合 public class Demo { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); list.add("abc1"); list.add("abc2"); list.add("abc3"); list.add("abc4"); Iterator<String> it1 = list.iterator(); while (it1.hasNext()) { String s1 = it1.next(); /* * 加入这段代码则会出现异常 * * if(s1.equals("abc3")){ list.add("abc"); } */ System.out.println(s1); } } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash