标准遍历方法
数组:
package com.Test;
public class Main {
public static void main(String[] args) {
int[] arr={3,4,5,7,8,9,0};
//1.用标准方法遍历
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
集合:
package com.Test;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
//遍历
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
注意:这种标准的遍历方式不能遍历Set系列集合
IDEA快捷生成
集合的(或者数组)的名字.fori 回车。
比如上面的代码:list.fori 然后回车。
增强for循环(开发最常用)
-
底层就是迭代器,为了简化迭代器的书写出现的。
-
底层就是一个 Iterator 迭代器。
-
所有的单列集合和数组才能使用增强 for 循环遍历。
书写格式:
for(元素数据类型 变量名:数组或集合){
}
比如:
for(String s:list){
System.out.println(s);
}
上面代码中的String s依次表示集合(或者数组)中的每一个数据。如果想在for循环里面使用集合(或者数组)里面的每一个数据,可以直接使用s就可以了,比如System.out.println(s);
数组:
package com.Test;
public class Main {
public static void main(String[] args) {
int[] arr={3,4,5,7,8,9,0};
//2.增强for遍历
for(int i:arr){
System.out.println(i);
}
}
}
集合:
package com.Test;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
//遍历
for(String s:list){
System.out.println(s);
}
}
}
IDEA快捷生成方法
集合的(或者数组)的名字.for 回车。
比如上面的代码:list.for 然后回车。
注意点
修改增强for中的变量,不会改变集合原本的数据。
package com.Test;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
//遍历
for (String s : list) {
s="aaa";
}
//输出
for (String s : list) {
System.out.println(s); //输出结果:zhangsan lisi wangwu
}
}
}
Lambda表达式遍历
更简单,更直接的遍历集合的方式。
list.forEach(s-> System.out.println(s));
代码示例:
package com.Test;
import java.util.ArrayList;
import java.util.function.Consumer;
public class Main {
public static void main(String[] args) {
/*
Lambda表达式遍历方法:
default void forEach(Consumer<?super T> action)
*/
ArrayList<String> list=new ArrayList<>();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
//遍历
list.forEach(s-> System.out.println(s));
}
}
迭代器遍历
思想:先把集合中的元素导入到迭代器中。为什么这么做?暂时不知道,😄 想详细了解:黑马阿玮老师讲解Lambda
怎么导?
Iterator<String> s=list.iterator();,iterator()是list集合中的一个方法。
意思就是把list集合中的数据导入到新的集合Iterator<String> s中去。
代码示例:
package com.Test;
import java.util.ArrayList;
import java.util.Iterator; //导入迭代器接口
public class Main {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
//遍历
Iterator<String> s=list.iterator(); //先把集合中的元素导入到迭代器中
while(s.hasNext()){
String str=s.next();
System.out.println(str);
}
}
}