Как разбить многомерный массив на множество одномерных
У меня массив byte[][][] array = new byte[][][]{};.
Из библиотек есть apache lang3 и google.
Мне нужно получить каждый из массивов
public byte[] getFirst() {
byte[] a1 = один из преобразованных массивов;
return a1;
}
21 java.
Ответы (1 шт):
Автор решения: Зонтик
→ Ссылка
Если нужно разбить трёхмерный массив на множество одномерных, то достаточно использовать циклы, и не надо никаких библиотек.
Пример:
//Возьмём такой массив
byte[][][] array = new byte[][][] {
{
{3, 4, 5}, {45, 30, -43}
},
{
{4}, {30, -44, -23, 90}, {0, 3}
}
};
//Разбиваем его на одномерные и складываем в HashSet
Set<byte[]> setOfArrays = new HashSet<>();
for(byte[][] i : array) {
for(byte[] j : i) {
setOfArrays.add(j);
}
}
//Выводим на экран, чтобы посмотреть, что получилось
for(byte[] current : setOfArrays) {
System.out.println(Arrays.toString(current));
}
Вывод:
[45, 30, -43]
[3, 4, 5]
[0, 3]
[30, -44, -23, 90]
[4]
Если вам важен порядок, то следует использовать не множество, а список, стек или очередь. Код будет аналогичный, нужно будет только заменить HashSet на нужную вам коллекцию. Если, например, вы выберете список (любую реализацию List), то получить первый массив можно будет так:
byte[] first = listOfArrays.getFirst();