Как создать матрицу из 2-х существующих ArrayLists (Java)? - PullRequest
0 голосов
/ 05 ноября 2018

Я читаю содержимое из текстового файла и разбираю его в отдельных списках ArrayLists.

Например, текстовый файл гласит:

Fruit1
Fruit2
Fruit3
Vegetable1
Vegetable2
Vegetable3
Vegetable4

В настоящее время у меня есть код, который разделяет каждую группу на собственный массив

fruits = [Fruit1, Fruit2, Fruit3]
vegetables = [Vegetable1, Vegetable2, Vegetable3, Vegetable4]

Как создать матрицу из n строк и m столбцов из этих двух существующих списков ArrayList?

Моя цель - сгенерировать матрицу 3х4 примерно так

          | Fruit1, Fruit2, Fruit3 
Vegetable1|
Vegetable2|
Vegetable3|
Vegetable4| 
          |

Я видел примеры, демонстрирующие инициализацию матрицы, однако, если я обновляю свой текстовый файл, чтобы, скажем, матрица 3x20 или матрица 5x20, я хочу, чтобы код выполнялся таким же образом, в котором я борюсь.

Вот код, который я написал для матрицы:

List<List<String>> matrix = new ArrayList<List<String>>();
matrix.add(fruits);
matrix.add(vegetables);
System.out.println(matrix);

Однако это вывод, который просто объединяет их

[Fruit1, Fruit2, Fruit3, Vegetable1, Vegetable2, Vegetable3, Vegetable4]

Как мне создать матрицу, сделав один ArrayList для строк, а другой ArrayList для столбцов?

1 Ответ

0 голосов
/ 05 ноября 2018

Предполагая, что вы хотите следующую матрицу:

Vegetable1 | Fruit1, Fruit2, Fruit3
Vegetable2 | Fruit1, Fruit2, Fruit3
Vegetable3 | Fruit1, Fruit2, Fruit3
Vegetable4 | Fruit1, Fruit2, Fruit3

Вы можете использовать следующий код, чтобы использовать ArrayList s для всех сравнений:

List<String> vegetables = new ArrayList<>(); // Fill the lists somehow
List<String> fruits = new ArrayList<>();

for(String vegetable : vegetables) {
    for(String fruit : fruits) {
        System.out.printf("Compare %s to %s%n", vegetable, fruit);
    }
}

Если это все, что вам нужно, вам не нужны вложенные списки. Если вы действительно хотите иметь матрицу, вам потребуется небольшая модификация кода:

List<String> vegetables = new ArrayList<>(); // Fill the lists somehow
List<String> fruits = new ArrayList<>();
List<List<String>> matrix = new ArrayList<>();    

for(String vegetable : vegetables) {
    List<String> row = new ArrayList<String>();
    row.add(vegetable);
    for(String fruit : fruits) {
        row.add(fruit);
    }
    matrix.add(row);
}

Это создаст строки с элементами VegetableN, Fruit1, Fruit2, Fruit3, где N - номер овощной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...