总结(>代表好于):
1.性能:一万左右数据 普通for = parallelstream foreach > 增强版for > 普通foreach > stream foreach
十万左右及以上数据 普通for = 增强版for < 普通foreach < stream foreach < parallelstream foreach
2.continue break 在普通for环境和增强for循环中可以使用,在两种foreach中不能使用
3.return 在普通for环境和增强for循环中是指定方法返回值,而在两种foreach中是起到continue类似的作用
4.入参都可以是空集合,都不能是null
java
package com.xin.demo.streamdemo;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
public class StreamForeachTest {
public static void main(String[] args) {
List<String> nameList = new ArrayList<>();
nameList.add("xiaohua1");
nameList.add("xiaohua2");
nameList.add("xiaohua3");
nameList.add("xiaohua4");
nameList.add("xiaohua5");
// 1.普通for循环
// 可以接受空集合,但是不能是null,否则nameList.size()会报空指针异常
// 普通for循环里可以有continue,break,return是用来指定方法返回值的
getCommonList(nameList);
// 2.增强版for循环
// 可以接受空集合,但是不能是null,否则会报空指针异常
// java5引入,增强版for循环里可以有continue,break,return是用来指定方法返回值的
getEnhanceList(nameList);
// 3.普通forEach
// 可以接受空集合,但是不能是null,否则会报空指针异常
// 不可以使用continue和break,return不是用来指定方法返回值的,
// 而是结束本次循环开始下次循环,相当于continue
getCommonForEach(nameList);
// 4.stream forEach
// 可以接受空集合,但是不能是null,否则会报空指针异常
// 不可以使用continue和break,return不是用来指定方法返回值的,
// 而是结束本次循环开始下次循环,相当于continue
getStreamForEach(nameList);
// 总结(>代表好于):
// 1.性能:一万左右数据 普通for = parallelstream foreach > 增强版for > 普通foreach > stream foreach
// 十万左右及以上数据 普通for = 增强版for < 普通foreach < stream foreach < parallelstream foreach
// 2.continue break 在普通for环境和增强for循环中可以使用,在两种foreach中不能使用
// 3.return 在普通for环境和增强for循环中是指定方法返回值,而在两种foreach中是起到continue类似的作用
// 4.入参都可以是空集合,都不能是null
}
public static List<String> getCommonList(List<String> nameList) {
List<String> commonNameList = new ArrayList<>();
for (int i = 0; i < nameList.size(); i++) {
if (StringUtils.equals(nameList.get(i), "xiaohua2")) {
commonNameList.add(nameList.get(i));
continue;
}
if (StringUtils.equals(nameList.get(i), "xiaohua3")) {
commonNameList.add(nameList.get(i));
return commonNameList;
}
}
System.out.println(commonNameList);
return commonNameList;
}
public static List<String> getEnhanceList(List<String> nameList) {
List<String> commonNameList = new ArrayList<>();
for (String name : nameList) {
if (StringUtils.equals(name, "xiaohua2")) {
commonNameList.add(name);
continue;
}
if (StringUtils.equals(name, "xiaohua3")) {
commonNameList.add(name);
return commonNameList;
}
}
System.out.println(commonNameList);
return commonNameList;
}
public static List<String> getCommonForEach(List<String> nameList) {
List<String> commonNameList = new ArrayList<>();
nameList.forEach(name -> {
if (StringUtils.equals(name, "xiaohua2")) {
commonNameList.add(name);
return;
}
if (StringUtils.equals(name, "xiaohua3")) {
commonNameList.add(name);
// 这里会报错
// return commonNameList;
}
});
System.out.println(commonNameList);
return commonNameList;
}
public static List<String> getStreamForEach(List<String> nameList) {
List<String> commonNameList = new ArrayList<>();
nameList.stream().forEach(name -> {
if (StringUtils.equals(name, "xiaohua2")) {
commonNameList.add(name);
return;
}
if (StringUtils.equals(name, "xiaohua3")) {
commonNameList.add(name);
// 这里会报错
// return commonNameList;
}
});
System.out.println(commonNameList);
return commonNameList;
}
}