Я ищу элегантный способ преобразования List<List<float[]>>
в float[]
путем сглаживания. Я думал, что это будет легкий ветерок, но, видимо, я ошибся. Я не могу использовать Java 8 или внешние библиотеки для решения проблемы. Я также не знаю размеров внутренних списков и массивов, и они не обязательно имеют одинаковый размер.Список Список массивов поплавков массиву float в Java
Это то, что у меня есть, я думаю, что это слишком сложно для такой простой задачи:
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;
}
Edit: Я забыл сказать, что внешний список является LinkedList для некоторых хороших причин. Может быть, это важно знать.
Это немного сложный и неэффективный. Однако вы не можете значительно уменьшить сложность, в которой должен быть установлен вложенный цикл 'for'. Вы в значительной степени это получили. – markspace
Жаль, я думаю, что это самый уродливый код, который я написал в этом году ... – wardva