Как разбить многомерный массив на множество одномерных

У меня массив 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(); 
→ Ссылка