java - 向自定义容器类添加 ".foreach"功能

标签 java java-8

我为我的游戏编写了自己的容器类,类似于 ArrayList 的容器类,但在很多方面有所不同,无论如何我想编写一个 foreach 方法来遍历支持数组。

我知道我可以使用 Arrays.stream然而,我很好奇为数组迭代编写 #foreach 方法的自定义 lambda 实现会是什么样子。

有人知道吗?谢谢

例子:

class Container<T> {
    T[] array = new T[200]; 
}

现在举例来说,我想这样做:

Container<Fish> fishies = new Container();
fishies.forEach(fish->System::out);

最佳答案

您需要在 Container 类中实现一个类似于 Stream 接口(interface)的 forEach 方法:

void forEach(Consumer<? super T> action) 
{
    for (int i = 0; i < array.length; i++)
        action.accept(array[i]);
}

forEach 实现是串行的,因此它比 Stream 实现简单得多,后者也可以是并行的。

我忽略了 T[] array = new T[200]; 没有通过编译这一事实,因为那是另一个问题。

关于java - 向自定义容器类添加 ".foreach"功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30566654/

相关文章:

java - Selenium chromeDriver 打开速度比直接在 chrome 浏览器中打开网站慢得多

java - 了解下游减少实现

java - "Your java version is out of date"带有最新的java

java - 将嵌套的 For 循环转换为流

java-8 - RxJava 2.x 错误打印奇怪的堆栈跟踪

java - 正则表达式根据确切的字符拆分,除非在它之前用反斜杠转义

Java蓝牙bluecove应用程序

java - 使用 Spring Boot 的 Elasticsearch 无法正常工作

java - 哈希码实现

java - 转换逻辑以使用 Java 8 Streams