2 回答
TA贡献1784条经验 获得超9个赞
如果数组从未以任何方式修改并且您想使用整个数组,那么您可以直接使用数组引用:
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{Readsheet.Stringvalue, Readsheet.Stringvalue, Readsheet.Stringvalue},
{Readsheet.Stringvalue, Readsheet.Stringvalue, Readsheet.Stringvalue},
},
Writesheet.Columns // <-- Array reference
));
如果可以修改数组,则可以创建整个数组的副本。有很多方法可以做到,我个人的偏好是Arrays.copyOf:
Arrays.copyOf(Writesheet.Columns, Writesheet.Columns.length) // <-- Copy of the entire array
如果您只需要数组的连续部分,则可以创建数组切片的副本:
Arrays.copyOfRange(Writesheet.Columns, 0, 3) // <-- Copy of a part of the array, indexes from 0 to 2
最后,如果您需要通过单独的非连续索引提取元素并且不想Writesheet.Columns[...]多次键入,您可以使用索引流并使用Stream.map()以下方法提取值:
IntStream.of(0, 1, 2) // <-- Indexes here
.mapToObj(i -> Writesheet.Columns[i]).toArray()
更新:使用,作为分隔符将结果数组连接到字符串:
IntStream.of(0, 1, 2) // <-- Indexes here
.mapToObj(i -> Writesheet.Columns[i]).collect(Collectors.joining(","))
TA贡献1853条经验 获得超9个赞
new String[]{Writesheet.Columns[0], Writesheet.Columns[1], Writesheet.Columns[2]}
可以替换为对数组的引用
Writesheet.Columns
尽管
{Readsheet.Stringvalue, Readsheet.Stringvalue, Readsheet.Stringvalue}
可以替换为
Stream.generate(() -> Readsheet.Stringvalue).limit(3).toArray(String[]::new)
可以推广到一个方法
public static <T> T[] generateArrayFromElement(T element, int size, IntFunction<T[]> arrayGeneratorFunction) {
return Stream.generate(() -> element)
.limit(size)
.toArray(arrayGeneratorFunction);
}
...
generateArrayFromElement(Readsheet.Stringvalue, 3, String[]::new);
(我们生成单个元素的无限流,限制为所需大小,并收集到数组中)
或者
public static <T> T[] generateArrayFromElement2(T element, T[] array) {
Arrays.fill(array, element);
return array;
}
...
generateArrayFromElement2(Readsheet.Stringvalue, new String[3]);
(我们用一个元素填充给定的数组并返回它)
添加回答
举报