總結(jié)(>代表好于):
1.性能:一萬左右數(shù)據(jù) 普通for = parallelstream foreach > 增強(qiáng)版for > 普通foreach > stream foreach
十萬左右及以上數(shù)據(jù) 普通for = 增強(qiáng)版for < 普通foreach < stream foreach < parallelstream foreach
2.continue break 在普通for環(huán)境和增強(qiáng)for循環(huán)中可以使用,在兩種foreach中不能使用
3.return 在普通for環(huán)境和增強(qiáng)for循環(huán)中是指定方法返回值,而在兩種foreach中是起到continue類似的作用
4.入?yún)⒍伎梢允强占?,都不能是null
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循環(huán)
// 可以接受空集合,但是不能是null,否則nameList.size()會報空指針異常
// 普通for循環(huán)里可以有continue,break,return是用來指定方法返回值的
getCommonList(nameList);
// 2.增強(qiáng)版for循環(huán)
// 可以接受空集合,但是不能是null,否則會報空指針異常
// java5引入,增強(qiáng)版for循環(huán)里可以有continue,break,return是用來指定方法返回值的
getEnhanceList(nameList);
// 3.普通forEach
// 可以接受空集合,但是不能是null,否則會報空指針異常
// 不可以使用continue和break,return不是用來指定方法返回值的,
// 而是結(jié)束本次循環(huán)開始下次循環(huán),相當(dāng)于continue
getCommonForEach(nameList);
// 4.stream forEach
// 可以接受空集合,但是不能是null,否則會報空指針異常
// 不可以使用continue和break,return不是用來指定方法返回值的,
// 而是結(jié)束本次循環(huán)開始下次循環(huán),相當(dāng)于continue
getStreamForEach(nameList);
// 總結(jié)(>代表好于):
// 1.性能:一萬左右數(shù)據(jù) 普通for = parallelstream foreach > 增強(qiáng)版for > 普通foreach > stream foreach
// 十萬左右及以上數(shù)據(jù) 普通for = 增強(qiáng)版for < 普通foreach < stream foreach < parallelstream foreach
// 2.continue break 在普通for環(huán)境和增強(qiáng)for循環(huán)中可以使用,在兩種foreach中不能使用
// 3.return 在普通for環(huán)境和增強(qiáng)for循環(huán)中是指定方法返回值,而在兩種foreach中是起到continue類似的作用
// 4.入?yún)⒍伎梢允强占?,都不能是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;
}
}
文章來源地址http://www.zghlxwxcb.cn/news/detail-670316.html
文章來源:http://www.zghlxwxcb.cn/news/detail-670316.html
到了這里,關(guān)于普通for循環(huán)、增強(qiáng)for循環(huán)、普通foreach、stream foreach的區(qū)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!