您的位置:首页 > 其它

迭代器与增强for遍历集合

2020-07-14 06:04 106 查看

迭代器基本概念

迭代:即Collection集合元素的通用获取方式。在取元素之前先要判断集合中有没有元素,
如果有,就把这个元素去出来,继续在判断,如果还有就在取出来,一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代

/*
java.util.Iterator接口:迭代器(对集合进行遍历)
有两个常用的方法
boolean hasNext():如果仍有元素可以迭代,则返回true
E next():返回迭代的下一元素(取出集合中的下一个元素)
Iterator迭代器是一个接口,需要使用到它的实现类,获取实现类方式比较特殊
Collection接口有个方法:iterator(),这个方法返回的就是迭代器实现类对象
Iterator<E> iterator()返回此Collection的元素上进行迭代的迭代器

使用步骤(重点):
1,使用集合中的方法iterator()获取迭代器的实现类,使用Iterator接口接收(多态)
2,使用Iterator接口中的方法hasNext()判断还有没有下一个元素
3,使用Iterator接口中的方法next取出集合中的下一个元素
*/
public class Demo01Iterator {
public static void main(String[] args) {
Collection<String> coll = new ArrayList<>();
coll.add("姚明");
coll.add("科比");
coll.add("乔丹");
coll.add("艾弗森");
//Iterator<E>接口也是有泛型的,迭代器的泛型跟着集合走,集合是什么泛型,迭代器就是什么
Iterator<String> it = coll.iterator();//多态
boolean b= it.hasNext();//判断有没有下一个元素
System.out.println(b);//true
String s = it.next();//接收第一元素
System.out.println(s);
//还有3个元素,还要同样进行3次
//没有元素在取出元素就会抛出“没有元素异常”
//一次次取很麻烦,都是重复的操作。所以可以用while循环
while(it.hasNext()){//返回true会一直执行,知道返回false就会停止
String e = it.next();
System.out.println(e);
}
for(Iterator<String> it2 = coll.iterator();it.hasNext();){
String e = it2.next();//取出来自动指向下一位
System.out.println(e);
}

}
}

增强for

/*
增强for循环:底层使用的也是迭代器,使用for循环的格式,简化了迭代器的书写
是JDK1.5之后出现的新特性
Collection<E> extends Iterable<E>:所有单列集合都可以使用增强for
public interface Iterable<E>实现这个接口允许对象成为“foreach”语句的目标

格式:(用来遍历集合和数组)
for(集合/数组数据类型 变量名 : 集合名/数组名){
sout(变量名);
}
*/
public class Demo01Foreach {
public static void main(String[] args) {
demo01();
demo02();
}
//使用增强for循环遍历集合
private static void demo02() {
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
for(String a : list){
System.out.println(a);
}
}

//使用增强for循环遍历数组
private static void demo01() {
int[] arr = {1,2,3,4,5};
for(int a : arr){
System.out.println(a);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: