Collection 集合
Collection 的遍历方式
迭代器遍历–不依赖索引
迭代器在Java中的类是:Iterator ,迭代器是集合专用的便利方式
package com.mycollection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;public class A03_CollectionDemo03 {
public static void main (String[] args) {
//1. 创建集合并添加元素
Collection<String> coll = new ArrayList<> ();
coll.add ("aaa");
coll.add ("bbb");
coll.add ("ccc");
coll.add ("ddd");
//2. 获取迭代器对象:迭代器好比一个指针,默认指向集合0索引处
Iterator<String> it = coll.iterator ();
//3. 利用循环不断地去获取集合中的每一个元素
while (it.hasNext ()){
//4. next方法两件事情,获取元素并移动指针到下一个索引
String str = it.next ();
System.out.println (str);
}
}
}
细节注意点:
1. 报错NoSuchElementException
2. 迭代器遍历完毕,指针不会复位
3. 循环中只能用一次next方法
4. 迭代器遍历时,不能用集合的方法进行增加或者删除
如果非要删除,可以用迭代器的remove()方法
package com.mycollection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/*
细节注意点:
1. 报错NoSuchElementException
2. 迭代器遍历完毕,指针不会复位
3. 循环中只能用一次next方法
4. 迭代器遍历时,不能用集合的方法进行增加或者删除
如果非要删除,可以用迭代器的remove()方法
*/
public class A03_CollectionDemo03 {
public static void main (String[] args) {
//1. 创建集合并添加元素
Collection<String> coll = new ArrayList<> ();
coll.add ("aaa");
coll.add ("bbb");
coll.add ("ccc");
coll.add ("ddd");
//2. 获取迭代器对象:迭代器好比一个指针,默认指向集合0索引处
Iterator<String> it = coll.iterator ();
//3. 利用循环不断地去获取集合中的每一个元素
while (it.hasNext ()){
//4. next方法两件事情,获取元素并移动指针到下一个索引
String str = it.next ();
System.out.println (str);
}
//当上面循环结束后,迭代器已经指向了最后没有元素的位置
//System.out.println (it.next ());//NoSuchElementException
//迭代器便利完毕,指针不会复位
System.out.println (it.hasNext ());
//如果我们要继续第二次便利集合,只能再获取一个新的迭代器对象
Iterator<String> it2 = coll.iterator ();
while (it2.hasNext ()){
System.out.println (it.next ());
}
}
}
增强for遍历
- 增强for 的底层就是迭代器,为了简化迭代器的代码书写的
- jdk5的新特性,内部原理就是一个Iterator迭代器
所有的单列集合和数组才能使用增强for循环
集合名.forpackage com.mycollection;
import java.util.ArrayList;
import java.util.Collection;public class A05_CollectionDemo05 {
public static void main (String[] args) {
Collection<String> coll = new ArrayList<> ();
coll.add("zhangsan");
coll.add("lisi");
coll.add("wangeu");
//快捷方式:集合名.for
for (String x:
coll) {
System.out.println (x);
}
}
}
增强for细节
修改增强for中的变量,不会改变集合中的原本的数据
s 只是第三方变量,修改也只是第三方
Lambda 表达式遍历
底层:其实也会自己遍历集合,依次得到每一个元素,
把得到的每一个元素,传给accept方法,
s依次表示集合中的数据
package com.mycollection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;
public class A06_CollectionDemo06 {
public static void main (String[] args) {
Collection<String> coll = new ArrayList<> ();
coll.add("zhangsan");
coll.add("lisi");
coll.add("wangwu");
//2. 利用匿名内部类的方式
// 底层:其实也会自己遍历集合,依次得到每一个元素,把得到的每一个元素,传给accept方法,s依次表示集合中的数据
coll.forEach (new Consumer<String> () {
@Override
public void accept (String s) {
System.out.println (s);
}
});
//Lambda 表达式
coll.forEach ((s)-> System.out.println (s));
}
}
还没有评论,来说两句吧...