Java для объекта [] [] - PullRequest
       10

Java для объекта [] []

0 голосов
/ 03 мая 2018

У меня есть Set<String>, который я хотел бы использовать для параметризованного теста TestNG.

Я хочу перейти с <"a", "b", "c"> на {{"a"}, {"b"}, {"c"}}

Я пробовал:

Set<String> elements = Stream.of("a", "b", "c").collect(Collectors.toSet());

Object[][] elementsArray = (Object[][]) elements.stream()
                .map(t -> new Object[] {t})
                .toArray(Object[]::new);

но это не работает. Любые указатели о том, как этого добиться? Не лямбда-решения также приветствуются.

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Все, что вам нужно, это Object[][]::new вместо:

Set<String> elements = Stream.of("a", "b", "c").collect(Collectors.toSet());

Object[][] elementsArray = elements.stream()
                .map(t -> new Object[] {t})
                .toArray(Object[][]::new);

С Object[]::new вы создаете Object[], а затем приводите его к Object[][] (что не получится).

0 голосов
/ 03 мая 2018

Вы сделали все правильно, кроме ссылки на метод для создания Object[][]. Вы создаете 2D-массив с элементами 1D-массива, содержащими строки.

Изменение

Object[]::new

до

Object[][]::new

Как только это будет сделано, вам не понадобится приведение к Object[][]; удалите это также.

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