Как разбить многомерный массив на множество одномерных
У меня массив 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();