Решение тривиально -- просто каждая строка списка записывается в свой массив:
public static String[][] toMatrix(List<String> data) {
return data.stream() // Stream<String>
.map(s -> new String[]{s}) // Stream<String[]>
.toArray(String[][]::new); // String[][]
}
System.out.println(Arrays.deepToString(
toMatrix(List.of("aaa", "bbb", "ccc"))
));
[[aaa], [bbb], [ccc]]
Создать массив из одного элемента-строки можно и "длинным" путём через .map(s -> Stream.of(s).toArray(String[]::new))
, но в данном случае создание стрима для того, чтобы сразу же вызвать его метод toArray
явно лишнее.
Обновление первоначальная хотелка была радикально изменена на получение побуквенных массивов для каждой строки.
Разбить строку на массив символов легко при помощи операции String::split("")
:
public static String[][] toCharMatrix(List<String> data) {
return data.stream() // Stream<String>
.map(s -> s.split("")) // Stream<String[]>
.toArray(String[][]::new); // String[][]
}
System.out.println(Arrays.deepToString(
toCharMatrix(List.of("aaa", "bbb", "ccc"))
));
[[a, a, a], [b, b, b], [c, c, c]]