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]);
(我們用一個元素填充給定的數組并返回它)
添加回答
舉報