Java 加入";。foreach“;自定义容器类的功能
我为我的游戏编写了自己的容器类,类似于ArrayList的容器类,但在很多方面有所不同,无论如何,我想编写一个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]; } 例如,现在让我们假设
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要有用得多。然而,这并不是问题所在。