Tag: foreach

Java是如何由编译器生成的循环代码

Java是如何由编译器生成循环代码的? 例如,如果我有: for(String s : getStringArray() ) { //do something with s } 其中getStringArray()是一个返回我想要循环的数组的函数,函数会被调用一次还是只调用一次? 一般来说,使用这个结构循环的代码有多优?

如何使用Files.lines(…)。forEach(…)读取文件?

我目前正在尝试从我拥有的纯文本文件中读取行。 我发现另一个stackoverflow( 用Java读取纯文本文件 ),你可以使用Files.lines(..)。forEach(..)但是我实际上无法弄清楚如何使用for each函数来读取line by行文本,任何人都知道在哪里寻找或如何这样做?

Java循环效率(“for”与“foreach”)

(对于那些熟悉JVM编译和优化技巧的人来说一个问题…… 🙂 是否有任何“for”和“foreach”模式明显优于其他模式? 考虑以下两个例子: public void forLoop(String[] text) { if (text != null) { for (int i=0; i<text.length; i++) { // Do something with text[i] } } } public void foreachLoop(String[] text) { if (text != null) { for (String s : text) { // Do something with s, exactly as with text[i] } } […]

为什么增强的for循环比循环的正常更有效

我读到增强的for循环比这里的for循环更有效: http://developer.android.com/guide/practices/performance.html#foreach 当我搜索它们的效率之间的差异时,我发现的是:在正常for循环的情况下,我们需要额外的步骤来找出数组的长度或大小等, for(Integer i : list){ …. } int n = list.size(); for(int i=0; i < n; ++i){ …. } 但这是唯一的原因,增强的for循环优于正常的循环吗? 在这种情况下,更好地使用normal for循环,因为理解增强的for循环有点复杂。 检查一个有趣的问题: http : //www.coderanch.com/t/258147/java-programmer-SCJP/certification/Enhanced-Loop-Vs-Loop 任何人都可以解释这两种for循环的内部实现,或解释使用增强型for循环的其他原因吗?

如何在MyBatis foreach中迭代HashMap?

我正在尝试在mybatis中生成如下所示的sql。 SELECT COL_C FROM TBLE_1 WHERE (COL_A, COL_B) in ( (‘kp’,’kar’),(‘srt’,’sach’)); 我的输入参数类型是HashMap。 现在如何从mapper xml文件生成SQL。 下面的代码抛出exception,说map被评估为null。 SELECT COL_C FROM TBLE_1 WHERE (COL_A, COL_B) in #{item},#{item.get(item)} 另一种方法是创建一个具有键值字段的类,创建一个对象列表,然后将parameterType作为list传递,如下所示。 SELECT COL_C FROM TBLE_1 WHERE (COL_A, COL_B) in #{item.getKey()},#{item.getVal()} 但有没有办法让我的mapper工作第一种方法? 除了将查询更改为union之外

原始数组如何在Java中为每个循环使用new?

我知道每个循环的新特性适用于Iterable和数组,但我不知道在使用数组时幕后的内容。 任何人都可以帮我理解这个吗? 提前致谢。 int[] number = new int[10]; for(int i: number) { }

在java8中,如何在lambdas foreach块中设置全局值?

public void test(){ String x; List list=Arrays.asList(“a”,”b”,”c”,”d”); list.forEach(n->{ if(n.equals(“d”)) x=”match the value”; }); } 1.像上面的代码一样,我想在foreach块旁边设置一个变量的值,它可以工作吗? 2.为什么? 3. foreach迭代器是有序的还是无序的? 4.我认为lamdas foreach块对于迭代器来说很酷且很简单,但这在java 7或之前的工作中确实是一件很复杂的事情。

使用每个循环的“高级”在Java中初始化数组

是否可以使用’advanced’for循环在Java中初始化数组? 例如 Integer[ ] numbers = new Integer[20]; int counter = 0; for ( Integer i : numbers ) { i = counter++; } for ( Integer i : numbers ) { System.out.println(i); } 这打印所有空值,为什么?