Java8中的foreach跳出循环break/return

浅浅的花香味﹌ 2022-04-25 06:12 880阅读 0赞

java8中跳出循环不能使用break?
通过测试发现:

对于java8中的特殊写法lamada表达式中,不能使用break,会提示错误;
java8中使用return,会跳出当前循环,继续下一次循环,作用类似continue;
java8中使用foreach,但是不是lamada表达式写法,可以正常使用break或者return,可以直接跳出循环.

  1. public class TestForEachJava8 {
  2. public static void main(String[] args) {
  3. System.out.println("c-------------------");
  4. //lamada表达式中foreach使用break
  5. List<String> c = Arrays.asList("6666", "7777", "8888", "9999");
  6. c.stream().forEach(str ->{
  7. if("8888".equals(str)){
  8. return; //跳出当前循环,继续下一轮
  9. }
  10. System.out.println(str);
  11. });
  12. System.out.println("d-------------------");
  13. List<String> d = Arrays.asList("6666", "7777", "8888", "9999");
  14. d.stream().forEach(str ->{
  15. System.out.println(str);
  16. if("8888".equals(str)){
  17. break; //IDE提示错误:break cannot be used outside of a loop or a switch
  18. }
  19. });
  20. System.out.println("a-------------------");
  21. List<String> a = new ArrayList<>();
  22. a.add("1111");
  23. a.add("2222");
  24. a.add("3333");
  25. a.add("4444");
  26. for(String str:a){
  27. if("3333".equals(str)){
  28. break; //正常跳出循环
  29. }
  30. System.out.println(str);
  31. }
  32. System.out.println("b-------------------");
  33. List<String> b = new ArrayList<>();
  34. b.add("1111");
  35. b.add("2222");
  36. b.add("3333");
  37. b.add("4444");
  38. for(String str:b){
  39. if("3333".equals(str)){
  40. return; //也能跳出循环
  41. }
  42. System.out.println(str);
  43. }
  44. }
  45. }

输出:

  1. c-------------------
  2. 6666
  3. 7777
  4. 9999
  5. d-------------------
  6. 6666
  7. 7777
  8. 8888
  9. 9999
  10. a-------------------
  11. 1111
  12. 2222
  13. b-------------------
  14. 1111
  15. 2222

TODO:foreach…

发表评论

表情:
评论列表 (有 0 条评论,880人围观)

还没有评论,来说两句吧...

相关阅读