for循环

在Java8的foreach()中使用return/break/continue

本小妞迷上赌 提交于 2019-12-09 06:30:19
今天使用lambda表达式处理集合时,发现对return、break以及continue的使用有点迷惑,于是自己动手测试了一下,才发现在使用foreach()处理集合时 不能使用break和continue 这两个方法,也就是说不能按照普通的for循环遍历集合时那样根据条件来中止遍历,而如果要实现在普通for循环中的效果时,可以使用return来达到,也就是说如果你在一个方法的lambda表达式中使用return时,这个方法是不会返回的,而只是执行下一次遍历,看如下的测试代码: List<String> list = Arrays.asList("123", "45634", "7892", "abch", "sdfhrthj", "mvkd"); list.stream().forEach(e ->{ if(e.length() >= 5){ return; } System.out.println(e); }); 上述代码的输出结果是如下图所示: 可以看出 return起到的作用和continue是相同的 。 想知道这是为什么,在 Stack Overflow 中找到一个答案,主要是说foreach()不是一个循环,不是设计为可以用break以及continue来中止的操作。 ---------------------------------------------------

Java 8 Stream的性能到底如何?

牧云@^-^@ 提交于 2019-12-09 06:30:06
Java 8提供的流的基于Lambda表达式的函数式的操作写法让人感觉很爽,笔者也一直用的很开心,直到看到了 Java8 Lambda表达式和流操作如何让你的代码变慢5倍 ,笔者当时是震惊的,我读书少,你不要骗我。瞬间我似乎为我的Server Application速度慢找到了一个很好地锅,不过这个跟书上讲的不一样啊。于是笔者追本溯源,最后找到了始作俑者自己的分析: 原文 不久之前我在社区内发表了这篇文章: I mused about the performance of Java 8 streams ,上面的测试结果貌似很有道理。其中一个测试是将传统的 for- 循环与Stream进行了比较。很多人表示了震惊、不相信等等很多很多的情绪,甚至有人直接说Stream是个什么鬼,哪凉快哪呆着去。这是没有道理的,毕竟不能通过一个简单地只是一个环境下的测试就否定这些。 在之前的测评中,在500,000个随机的整形数的数组的遍历中,我们得出的结论是 for- 循环的速度会比Stream的速度快上15倍。其中 for- 循环的数组如下所示: int[] a = ints; int e = ints.length; int m = Integer.MIN_VALUE; for (int i = 0; i < e; i++) if (a[i] > m) m = a[i]; 同样的

Java - for 和 foreach循环使用

怎甘沉沦 提交于 2019-12-09 06:29:19
java新人学习 2016-11-30 10:50 for 语句比较简单,用于循环数据。 for循环执行的次数是在执行前就确定的。语法格式如下: for(初始化; 布尔表达式; 更新) { //代码语句} foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。 foreach 语法格式如下: for(元素类型t 元素变量x : 遍历对象obj){ 引用了x的java语句; } 以下实例演示了 for 和 foreach循环使用: /* author by w3cschool.cc Main.java */public class Main { public static void main(String[] args) { int[] intary = { 1,2,3,4}; forDisplay(intary); foreachDisplay(intary); } public static void forDisplay(int[] a){ System.out.println("使用 for 循环数组"); for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println(); } public static

Java for循环写法效率

∥☆過路亽.° 提交于 2019-12-09 06:27:30
import java.util.ArrayList; import java.util.List; public class Main { private static void test (List<Integer> list) { long start = 0 L; long end = 0 L; // ============================== start = System.currentTimeMillis(); for (Integer i : list) { } end = System.currentTimeMillis(); System. out .println(end - start); // ============================== start = System.currentTimeMillis(); for ( int i= 0 ;i<list.size();i++) { Integer j=list. get (i); } end = System.currentTimeMillis(); System. out .println(end - start); // ============================== start = System.currentTimeMillis(); for (

JAVA之 for和foreach循环

前提是你 提交于 2019-12-09 06:24:18
for循环、do-while循环和while循环是三种比较常见的循环,而且是基本上所有的编程语言里面都会用的循环。而foreach循环是java所特有的,是java的五大特点之一,是for循环的一种简写方式。 代码片段1: int [] b={ 11 , 22 , 33 , 44 , 55 , 66 }; System. out .println( "遍历第二个数组:" ); for ( int i= 0 ;i<b.length;i++) { // i充当了下标 System. out .print(b[i]+ " " ); } System. out .println(); 代码片段2: int [] b={ 11 , 22 , 33 , 44 , 55 , 66 }; System. out .println( "使用foreach方式遍历数组:" ); for ( int x:b){ System. out .print(x+ " " ); } System. out .println(); 上述两段代码run的结果是完全一样的 来源: CSDN 作者: kriswu_sweetgirl 链接: https://blog.csdn.net/kriswu_sweetgirl/article/details/78745919

java中的foreach循环

穿精又带淫゛_ 提交于 2019-12-09 06:23:09
前言:关于java中的foreach循环我在学习hadoop中使用javaAPI中经常用到,一开始并不了解,以前我们学校老师没有告诉我们,也没有遇到,后来不断的使用才渐渐了解。 一、介绍: foreach语句是java1.5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。 foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本。 foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。从英文字面意思理解foreach也就是“for 每一个”的意思。实际上也就是这个意思。 foreach的语句格式: for(元素类型t 元素变量x : 遍历对象obj){ 引用了x的java语句; } 二、代码实例: package com.stu.demo; import java.io.File; /** * * @author 小炜 @version1.0 File类的使用 * */ public class Test03 { public static void main(String[] args) { // File file = new File("f:\\c.txt"); // // System.out.println

java中foreach循环

情到浓时终转凉″ 提交于 2019-12-09 06:17:26
foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。 foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本。 foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。从英文字面意思理解foreach也就是“for 每一个”的意思。实际上也就是这个意思。 foreach的语句格式: for(元素类型t 元素变量x : 遍历对象obj){ 引用了x的java语句; } 一、foreach简化数组和集合的遍历 下面通过两个例子简单例子看看foreach是如何简化编程的。代码如下: import java . util . Arrays ; import java . util . List ; import java . util . ArrayList ; /** * Created by IntelliJ IDEA. * User: leizhimin * Date: 2007-12-3 * Time: 16:58:24 * Java5新特征之foreach语句使用总结 */ public class TestArray { public static void main ( String

Java 增强for循环(foreach循环)

喜夏-厌秋 提交于 2019-12-09 06:16:45
Java:增强for循环(foreach循环) 在 JDK 5.0 中添加了一个新的特性—— foreach 循环。它是一种更加简洁的 for 循环,也称为 增强for循环 。 public static void main ( String [ ] args ) { ArrayList list = new ArrayList ( ) ; //创建ArrayList集合 list . add ( 10086 ) ; //向该集合中添加元素 list . add ( "你好" ) ; list . add ( 'a' ) ; list . add ( "bbbb" ) ; for ( Object obj : list ) { //使用增强for循环遍历集合 System . out . println ( obj ) ; //取出并打印集合中的元素 } } 使用 增强for循环 需要注意它的局限性:在遍历集合和数组时,只能访问集合中的元素,不能对其中的元素进行修改。 static String [ ] strs = { "aaa" , "bbb" , "ccc" } ; public static void main ( String [ ] args ) { //增强for循环 for ( String str : strs ) { str = "ddd" ; } System

使用for循环还是foreach循环?

谁说胖子不能爱 提交于 2019-12-09 06:01:03
很多时候我们很自然的认为,for循环的时候使用foreach和原来的for循环用下标的方式遍历是相同的。 而且因为foreach循环写法简单,很容易理解,而且少去了很多麻烦的变量,所以估计在学会使用foreach循环之后,很多人就没有用过下标的循环了。 但是你知道两者其实还是有很大区别的,在不同的情况下面应该使用不同的方式去循环。 否则会导致循环的时间变长。数据量小的时候当然没有什么关系,但是一旦数据量大了之后问题就会暴露出来了。 首先我们要知道的时候foreach循环是利用迭代器的使用循环。那么什么是迭代器呢? 提供一种方法访问一个容器对象的各个元素,同时又无需暴露该对象的内部细节,这是设计模式中的一种解释。 for(int i:list) for(Iterator<Integer> i=list.iterator();i.hasNext();) 上面两种写法意思其实是一样的 其实就是利用了hasNext方法实现了foreach循环 知道了什么是foreach循环,那么什么时候去使用,也就好解释了。 然后需要知道的是什么是RandomAccess接口,ArrayList数组实现了这个接口,这个接口是随机存取接口。 实现了这个接口就表示内部的存放是随机的,但是foreach循环需要需要使用next方法获取下一个元素,而随机存放的话就需要强制建立前后的联系。

js中的for循环 写法的效率对比

血红的双手。 提交于 2019-12-09 05:59:59
一共三种写法 如下: view sourceprint? for ( var i = 0; i < arr.length; i++) view sourceprint? for ( var i in arr) view sourceprint? for ( var i = 0, len = arr.length; i < len; i++) 先看下运行测试的界面: 再看下对应的三个结果,三种写法执行的效率是有很大不同的: 如此看来,执行效率最快的是第三种: view sourceprint? for ( var i = 0, len = arr.length; i < len; i++) 先声明变量,再进行循环判断,效率远比遍历数组高得多,也比循环取得数组长度的效率快得多! 下面是页面源代码: view sourceprint? <html> <body> <script type= "text/ 网页特效 " > function makeArr(num) { var arr = []; for ( var i = 0; i<num; i++){ arr.push( 'abc' ); } arr.join( '' ); return arr; } var num = 10000000; function function1() { var arr = makeArr(num);