问题内容: 我有一个列表,我想在其中过滤元素并在每个元素上应用一个方法,然后将结果添加到另一个列表中。 使用Java 8,我注意到可以用2种不同的方式来做到这一点。我想知道它们之间更有效的方法,并理解为什么一种方法比另一种更好。 我愿意就第三种方式提出任何建议。 方法1: 方法2: 问题答案: 不必担心任何性能差异,在这种情况下,通常它们会很小。 方法2是可取的,因为 它不需要变异lambda表达
问题内容: 我一定在这里想念什么。 在Java 5中,引入了“ for- each循环”语句(也称为增强的for循环) 。似乎引入它主要是为了遍历 Collections 。任何实现该接口的集合(或容器)类都可以使用“ for- each循环”进行迭代。也许出于历史原因,Java数组未实现Iterable接口。但是由于数组是普遍存在的,因此可以接受在数组上使用for- each循环(生成与传统的f
问题内容: 我知道编程的含义以及何时使用它。Java中有关键字吗?我试图找到一个关键字列表,但只有而没有。 问题答案: foreach不是Java关键字(IDE可以识别它并将“ For- each ”循环放入)。
问题内容: 我有一个正在实例化并填充在后台线程上的代码(我用它来存储数据)。同时,可以在主线程上对其进行访问,并通过使用foreach对其进行迭代。因此,这显然可能导致引发异常。 我的问题是使此类类字段成为线程安全的而不每次都复制它或不使用标志的最佳实践是什么? 问题答案: 通常,对不是线程安全的数据结构进行并发操作是一个非常糟糕的主意。您无法保证将来的实现不会改变,这可能会严重影响应用程序的运行
问题内容: 如果您有一个Array,并且想使用Java8 forEach()方法,那么哪种方法更好或更有效: 要么 差异是否显着,或者有更好的解决方案来解决? 问题答案: 都不行 如果您已经有一个数组, 我会用: 因为您将数组到流的转换留给了JDK-让它负责效率等。 但是,由于您没有数组,因此我将使用的varargs创建值的流: 这又让JDK负责有效地按需传输值。
问题内容: Java的foreach循环是否从第一个对象开始,并且以线性方式工作到结束?例如 是否总是先处理字符串“ Zoe”,然后处理“ Bob”等?没有排序发生?我已经对它进行了测试,但没有找到任何东西,但是我需要保证,在文档中找不到任何东西。 问题答案: 是。顺序不变。这适用于Java类集合框架的所有类型的集合,这些集合实现由for循环使用的迭代器接口。如果要对数组进行排序,则可以使用Arr
问题内容: 如何理解和使用Java中的增强型for循环foreach? 问题答案: 请注意,如果你需要;在循环中使用或以某种方式访问实际的迭代器,则不能使用该惯用语,因为实际的迭代器只是推断出来的。 正如Denis Bueno所指出的那样,此代码适用于实现该Iterable接口的任何对象。 同样,如果习惯用法的右侧是一个而不是一个对象,则内部代码将使用一个索引计数器并进行检查。请参阅Java语
问题内容: (对于那些熟悉JVM编译和优化技巧的人来说是一个问题… :-) 是否有任何一种“ for”和“ foreach”模式明显优于另一种? 考虑以下两个示例: 是快或慢? 假设在这两种情况下,阵列都不需要进行任何健全性检查,是否有明显的获胜者或仍然太接近而无法进行跟注? 编辑:正如在某些答案中指出的,数组的性能应该相同,而“ foreach”模式对于像列表这样的抽象数据类型可能会稍好一些。
问题内容: 为什么在Java中引入此循环?它是Java创建的吗?它的目的是什么(提高内存/ cpu的使用效率)? 问题答案: 为什么在Java中引入此循环? 只是为了简化遍历通用集合和数组。代替 你可以做 这使得代码更具可读性和更好的可维护性。 它是Java创作吗? 不,它早于Java就以其他语言存在。Java实施起来相对较晚。 目的是什么? 请参阅第一个答案。 要了解更多信息,请查阅有关该主题的
问题内容: 我可以在varArgs上使用还是在varArgs上使用? 问题答案: 变量参数的行为与数组相似,因此您可以使用来获取变量变量中的一个: 您可以使用以下方法遍历它们:
问题内容: 假设我们尝试将可能引发检查异常的lambda应用于Java 8流: 这不会编译。 一种解决方法是将检查后的异常嵌套在其中,但是这会使以后的异常处理变得复杂,而且很丑陋: 另一种解决方法可能是转换限制功能,以普通的旧的foreach 循环是比较友好的检查的异常。 但是幼稚的方法失败了: 更新资料 为何在的地方贴了一个回答该问题的技巧。作为副答案本身并不能真正回答该问题。我认为这不足以使这
问题内容: public void test(){ String x; List list=Arrays.asList(“a”,”b”,”c”,”d”); 1,像上面的代码一样,我想在foreach块旁边设置一个变量的值,行得通吗? 2.为什么呢? 3,而foreach迭代器是有序的还是无序的? 4,我认为lamdas foreach块对于迭代器来说很酷而且很简单,但这确实是一件很复杂的事情,而不
问题内容: 有没有一种方法可以在Java 8中构建使用索引迭代的方法?理想情况下,我想要这样的东西: 我现在能做的最好的事情是: 问题答案: 由于您要遍历可索引的集合(列表等),因此我假设您可以仅遍历元素的索引: 生成的代码类似于使用经典i ++样式的for循环迭代列表,但具有更易于并行化的特性(当然,假设并发对params的只读访问是安全的)。
问题内容: 我正在运行以下代码,但有时在运行时会出现某种并发异常。 我对其进行了重构以解决并发问题,但这确实使我提出了一个问题。如果将for构造更改为Iterator模式,性能会有所不同吗?foreach构造和Iterator类之间的访问级别有什么区别? 问题答案: 区别主要在于语法糖,不同之处在于可以从迭代中删除项目。从技术上讲,增强的循环使您可以循环遍历所有,其中至少包括s和数组。 不必担心性
问题内容: 我有四个foreach循环,这些循环遍历集合并根据条件进行操作。 这是我现在正在编写的代码: 主要对象(代码中的对象)来自第三方提供程序SDK,因此我无法在该部分上进行任何更改。我想问一下Stack Overflow社区是否有更好的方法来打破所有四个foreach循环。或者,如果还有其他方法可以重构此代码,使其更具可读性和可维护性。 问题答案: 在最外面的循环上使用标签,当您想跳出所有