考虑我目前的以下课程:
public interface Drawable {
public void compileProgram();
public Program getProgram();
public int getDataSize();
public FloatBuffer putData(final FloatBuffer dataBuffer);
public int getDataMode();
public static int countDataSize(final Collection<Drawable> drawables) {
return drawables.stream().mapToInt((drawable) -> drawable.getDataSize()).sum();
}
public static FloatBuffer putAllData(final List<Drawable> drawables) {
FloatBuffer dataBuffer = BufferUtils.createFloatBuffer(countDataSize(drawables) * 3);
drawables.stream().forEachOrdered((drawable) -> dataBuffer.put(drawable.putData(dataBuffer)));
return (FloatBuffer)dataBuffer.clear();
}
}
现在看看countDataSize
:
- 我有作为输入
Collection<Drawable>
,因为我不关心顺序,我只想总结它们的大小。 - 我使用
drawables.stream()
,如果我传入一个Stream<Drawable>
参数,那将是多余的。
接下来看看putAllData
:
- 正如我在这里所说
List<Drawable> drawables
的那样,这次的顺序确实很重要。 - 我
drawables.stream()
用来访问它们,这是按顺序发生的forEachOrdered()
。
我想Stream<Drawable>
用作输入,但是传递 aCollection<Drawable>
甚至List<Drawable>
工作吗?如果是这样,我如何确保在第一种情况下顺序无关紧要,而在第二种情况下很重要?