Как преобразовать 2D-массив в список и распечатать список?

#java

#java

Вопрос:

Мне нужно преобразовать 2D-массив в список, удалить дубликаты и распечатать значения.

Используя приведенный ниже код, я не могу распечатать 2D-массив

Когда я попытался распечатать его, он печатает значение индекса.

Даже я пытался использовать итератор,

 int array2D [][] = {{111,555,111,78,98},{87,54,53}};
        ArrayList<Integer> numberList = new ArrayList<Integer>();
        for(int i=0;i<array2D.length;i  )
        {
            for(int j=0;j<array2D[i].length;j  )
            {
                numberList.add(i, j);
            }
        }

        System.out.println(numberList);
Iterator iter = numberList.iterator();
          while (iter.hasNext()) {
             System.out.println(iter.next());
          }
  

Тем не менее, он не работает.

Комментарии:

1. Как вы думаете, что numberList.add(i,j) это должно делать?

2. Мое предположение — это добавит строки и столбцы в массив

3. Что значит «мое предположение»? Разве вы не написали эту программу? Должно быть, у вас было какое-то намерение, когда вы писали эту инструкцию. В любом случае, list.add(x,y) помещает значение y в x позицию списка. Итак, если x равно 6 и y равно 20, 7-м элементом в списке будет 20.

Ответ №1:

Когда я попытался распечатать его, он напечатал значение индекса.

Он печатает значение индекса, потому что вы добавили индексы вместо фактического значения. Вы должны добавить фактическое значение массива по индексу i и j тому подобное:

  numberList.add(array2D[i][j]);
  

Если вы хотите удалить дубликаты, вы можете использовать Set вместо ArrayList :

 Set<Integer> numberList = new LinkedHashSet<>();
  

Комментарии:

1. Использование a HashSet изменит порядок элементов. Когда в задаче указано «перемещение в список», а не «перемещение в коллекцию», это подразумевает, что порядок важен, поскольку это основная предпосылка списка.