我有一個要求,我需要將串列中的專案作為引數傳遞給庫函式。此函式接收引數為String[] args. 所以像myFunc(list[0], list[1], list[2]...). 有沒有辦法只提取串列中的專案并傳遞它們?
規格:
代碼:
CsvSchema schema = csvMapper.typedSchemaFor(PersonDetailsCSVTemplate.class)
.withHeader()
.sortedBy("personNameHeader", "personAgeHeader",...)
.withColumnSeparator(',')
.withComments();
這里 sortedBy 函式需要多個字串作為引數,它會根據這些字串進行排序,雖然我有一個從 csv 標題行接收到的字串串列,但我不確定如何單獨傳遞它們。
uj5u.com熱心網友回復:
您可以使用Java 11 中添加的方法將您的轉換List<String>為 a :String[]toArray(IntFunction<T[]> generator)
String[] strings = list.toArray(String[]::new);
或者直接傳遞:
CsvSchema schema = csvMapper.typedSchemaFor(PersonDetailsCSVTemplate.class)
.withHeader()
.sortedBy(list.toArray(String[]::new))
.withColumnSeparator(',')
.withComments();
在 Java 8 上,使用toArray需要陣列的多載:
CsvSchema schema = csvMapper.typedSchemaFor(PersonDetailsCSVTemplate.class)
.withHeader()
.sortedBy(list.toArray(new String[list.size()]))
.withColumnSeparator(',')
.withComments();
要么:
CsvSchema schema = csvMapper.typedSchemaFor(PersonDetailsCSVTemplate.class)
.withHeader()
.sortedBy(list.toArray(new String[0]))
.withColumnSeparator(',')
.withComments();
如果陣列太小,它將根據您傳入的陣列的元素型別創建必要的大小之一。這就是傳入零長度陣列的原因。
uj5u.com熱心網友回復:
你的意思是你需要的函式只接受 String[] 型別作為引數并且你有專案串列并且你想傳遞你需要的專案函式串列?如果是這樣,你可以使用toArray();方法介面串列例如:
List<String> list = Arrays.asList("A", "B", "C");
String[] array = list.toArray(new String[list.size()]);
System.out.println(Arrays.toString(array));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/454110.html
標籤:爪哇 反序列化 杰克逊数据格式-csv
