【发布时间】:2016-03-14 19:26:05
【问题描述】:
我正在寻找一种优雅的方式来通过展平将 List<List<float[]>> 转换为 float[]。我以为这会是一件轻而易举的事,但显然我错了。我无法使用 Java 8 或外部库来解决问题。我也不知道内部列表和数组的大小,它们的大小不一定相同。
这就是我所拥有的,我认为对于这么简单的任务来说太复杂了:
private float[] toFloatBuffer(List<List<float[]>> buffers) {
//First: creating a new list to store the Float values
List<Float> mergedList = new ArrayList<>();
//Adding the float values to the mergedList
for(List<float[]> secondBuffer : buffers) {
for(float[] b : secondBuffer) {
for(float f : b) {
mergedList.add(f);
}
}
}
//Creating the final buffer with the size of mergedList
float[] merged = new float[mergedList.size()];
//This doesn't work for some odd reason...
//float[] merged = mergedList.toArray();
int i = 0;
//Adding the values of mergedList to merged
for(float f : mergedList) {
merged[i++] = f;
}
return merged;
}
编辑:出于某些充分的原因,我忘了说外部列表是 LinkedList。也许知道这一点很重要。
【问题讨论】:
-
有点复杂,效率不高。但是,您不能大大降低复杂性,嵌套的
for循环必须存在。你已经明白了。 -
可惜了,我觉得这是我今年写的最丑的代码了……
标签: java arrays collections buffer