Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 加入";。foreach“;自定义容器类的功能_Java_Java 8 - Fatal编程技术网

Java 加入";。foreach“;自定义容器类的功能

Java 加入";。foreach“;自定义容器类的功能,java,java-8,Java,Java 8,我为我的游戏编写了自己的容器类,类似于ArrayList的容器类,但在很多方面有所不同,无论如何,我想编写一个foreach方法,该方法将迭代支持数组 我知道我可以只使用Arrays.stream,但是我很好奇在数组上为迭代编写#foreach方法的自定义lambda实现会是什么样子 有人有线索吗?谢谢 例如: class Container<T> { T[] array = new T[200]; } 类容器{ T[]数组=新的T[200]; } 例如,现在让我们假设

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

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

有人有线索吗?谢谢

例如:

class Container<T> {
    T[] array = new T[200]; 
}
类容器{
T[]数组=新的T[200];
}
例如,现在让我们假设我想这样做:

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

您需要实现一个
forEach
方法,类似于
容器中的
接口:

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

void forEach(Consumer我建议您创建一个返回流的方法:

Stream<T> stream() {
    return Arrays.stream(array);
    // or probably Arrays.stream(array, 0, size); if it's used partially
}
Stream(){
返回数组。流(数组);
//或者可能是Arrays.stream(array,0,size);如果部分使用
}

这样,用户将不仅拥有
forEach
,而且拥有流所支持的所有操作。

您不能新建
Generic
@Chengphoi(t[])新建Obejct[200];
t[]数组=(t[])新建对象[200];
抱歉。当然,
用于(t:array)操作。接受(t)
也可以……是的!返回一个流比公开一个forEach要有用得多。然而,这并不是问题所在。