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[][]
(这将失败)。
我有一个 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[][]
(这将失败)。