Java 设置为对象[][]

Java Set to Object[][]

我有一个 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);

但它不起作用。关于如何实现这一目标的任何指示?也欢迎使用非 lambda 解决方案。

除了创建 Object[][] 的方法参考外,您做对了所有事情。您正在构建一个二维数组,其中包含保存字符串的一维数组元素。

改变

Object[]::new

Object[][]::new

完成后,您就不需要转换为 Object[][];也删除它。

您只需要 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[][](这将失败)。