深入学习java源码之ArrayList.iterator()与ArrayList.listIterator()
内部类的使用典型的情况是,内部类继承自某个类或实现某个接口,内部类的代码操作创建其的外层类的对象。所以你可以认为内部类提供了某种进入其外层类的窗口。 使用内部类最吸引人的原因是:每个内部类都能独立地继承自一个(接口的)实现,所以无论外层类是否已经继承了某个(接口的)实现,对于内部类都没有影响。如果没有内部类提供的可以继承多个具体的或抽象的类的能力,一些设计与编程问题就很难解决。从这个角度看,内部类使得多重继承的解决方案变得完整。接口解决了部分问题,而内部类有效地实现了“多重继承”。
ArrayList list = new ArrayList();
list.add(null);
list.add("abc1");
list.add("abc2");
list.add("abc3");
list.add("abc4");
/*
* 使用迭代器遍历集合
*/
//获取迭代器
Iterator it = list.iterator();
//使用while遍历集合
while(it.hasNext()){
String s = it.next();
/*
* 判断集合中有没有"abc3"这个元素
* 如果有,增加一个元素"itcast"
* 编程技巧:使用equals判断的时候,要把已知的变量写在前边,未知的写在后边,防止空指针异常
*/
//if(s.equals("abc3")){
if("abc3".equals(s)){
//1.迭代就是迭代,不要对集合进行修改
//list.add("itcast");
}
System.out.println(s);
}
/*
* 2.使用迭代器Iterator的子接口ListIterator中的方法add/remove,让迭代器自己增加往集合中增加元素/移除元素
*/
ListIterator listIt = list.listIterator();
while(listIt.hasNext()){
String s = listIt.next();
if("abc3".equals(s)){
listIt.add("itcast");
}
System.out.println(s);
}
System.out.println(list);
}
集合类(包括List)现在都有一个forEach方法,对元素进行迭代(遍历),所以我们不需要再写for循环了。forEach方法接受一个函数接口Consumer做参数,所以可以使用λ表达式。 这种内部迭代方法广泛存在于各种语言,如C++的STL算法库、python、ruby、scala等。
for(Object o: list) { // 外部迭代
System.out.println(o);
}
可以写成:
list.forEach(o -> {System.out.println(o);}); //forEach函数实现内部迭代
java源码
一个集合的迭代器。 Iterator需要的地方Enumeration在Java集合框架。 迭代器有两种不同的枚举方式: 迭代器允许调用者在迭代期间从底层集合中删除元素,并具有明确定义的语义。 方法名称得到改进。
Modifier and TypeMethod and Descriptionvoid
forEach(Consumer
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?