package ru.job4j.convert;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * Класс для конвертации двумерного массива в ArrayList и наоборот.
 * @author vkovrov
 * @version 0.1
 * @since 0.1
 */
public class ConvertList {

    /**
     * Метод для конвертации двумерного массива в ArrayList.
     * @param array двумерный массив.
     * @return список значений.
     */
    public List<Integer> toList(int[][] array) {
        List<Integer> list = new ArrayList<>();
        for (int[] arr : array) {
            for (int item : arr) {
                list.add(item);
            }
        }
        return list;
    }

    /**
     * Метод для конвертации списка в двумерный массив.
     * @param list список целочисленных значений.
     * @param rows количество строк.
     * @return целочисленный двумерный массив.
     */
    public int[][] toArray(List<Integer> list, int rows) {
        int[][] array = new int[rows][(int) Math.ceil((double) list.size() / rows)];
        //int zeroNumber = (list.size() / rows) - (list.size() % rows);
        Iterator<Integer> iterator = list.iterator();
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[0].length; j++) {
                if (iterator.hasNext()) {
                    array[i][j] = iterator.next();
                } else {
                    array[i][j] = 0;
                }
            }
        }
        return array;
    }

    /**
     * Метод для конвертации списка массивов в список со всеми элементами массивов.
     * @param list список массивов.
     * @return список со всеми элементами массивов.
     */
    public List<Integer> convert(List<int[]> list) {
        List<Integer> listWithAllItems = new ArrayList<>();
        for (int[] array : list) {
            for (int item : array) {
                listWithAllItems.add(item);
            }
        }
        return listWithAllItems;
    }
}

@@ -925,24 +925,83 @@
      int%5B%5D%5B%5D
+ array;%0A        if (list != null && rows %3E 0) %7B%0A           
  array = new
@@ -1066,76 +1066,8 @@
     
-    //int zeroNumber = (list.size() / rows) - (list.size() %25 rows);%0A
     
@@ -1112,24 +1112,28 @@
 iterator();%0A
+    
         for 
@@ -1173,32 +1173,36 @@
 ) %7B%0A            
+    
 for (int j = 0; 
@@ -1225,24 +1225,28 @@
 gth; j++) %7B%0A
+    
             
@@ -1287,32 +1287,36 @@
                 
+    
 array%5Bi%5D%5Bj%5D = it
@@ -1346,16 +1346,20 @@
         
+    
 %7D else %7B
@@ -1371,32 +1371,36 @@
                 
+ 
+   
 array%5Bi%5D%5Bj%5D = 0;
@@ -1408,34 +1408,40 @@
                 
-%7D%0A
+    %7D%0A  
             %7D%0A  
@@ -1428,33 +1428,153 @@
 %7D%0A              
-%7D
+  %7D%0A            %7D%0A        %7D else %7B%0A            throw new IllegalArgumentException(%22null pointer or illegal rows number%22);
 %0A        %7D%0A     

fix task - 3. Конвертация двумерного массива в ArrayList и наоборот [#10035]