如何仅将列表的值作为 Java 中的参数传递
How to pass just the values of a list as arguments in Java
我有一个要求,需要将列表项作为参数传递给库函数。此函数接收参数 String[] args
。所以像 myFunc(list[0], list[1], list[2]...)
这样的东西。有没有办法只提取列表的项目并传递它们?
细节:
代码:
CsvSchema schema = csvMapper.typedSchemaFor(PersonDetailsCSVTemplate.class)
.withHeader()
.sortedBy("personNameHeader", "personAgeHeader",...)
.withColumnSeparator(',')
.withComments();
这里的 sortedBy 函数需要多个字符串作为参数,它将根据这些字符串进行排序,虽然我有一个从 csv header 行收到的字符串列表,但我不确定如何单独传递它们。
您可以使用 Java 11 中添加的 toArray(IntFunction<T[]> generator)
方法将 List<String>
转换为 String[]
:
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();
如果数组太小,它会根据您传入的数组的元素类型创建一个必要的大小。这就是为什么传入 zero-length 数组会起作用的原因。
你的意思是你需要的函数只接受 String[] 类型作为参数并且你有项目列表并且你想传递这个项目列表函数,这是你需要的?如果是这样你可以使用接口列表 toArray();
方法例如:
List<String> list = Arrays.asList("A", "B", "C");
String[] array = list.toArray(new String[list.size()]);
System.out.println(Arrays.toString(array));
我有一个要求,需要将列表项作为参数传递给库函数。此函数接收参数 String[] args
。所以像 myFunc(list[0], list[1], list[2]...)
这样的东西。有没有办法只提取列表的项目并传递它们?
细节:
代码:
CsvSchema schema = csvMapper.typedSchemaFor(PersonDetailsCSVTemplate.class)
.withHeader()
.sortedBy("personNameHeader", "personAgeHeader",...)
.withColumnSeparator(',')
.withComments();
这里的 sortedBy 函数需要多个字符串作为参数,它将根据这些字符串进行排序,虽然我有一个从 csv header 行收到的字符串列表,但我不确定如何单独传递它们。
您可以使用 Java 11 中添加的 toArray(IntFunction<T[]> generator)
方法将 List<String>
转换为 String[]
:
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();
如果数组太小,它会根据您传入的数组的元素类型创建一个必要的大小。这就是为什么传入 zero-length 数组会起作用的原因。
你的意思是你需要的函数只接受 String[] 类型作为参数并且你有项目列表并且你想传递这个项目列表函数,这是你需要的?如果是这样你可以使用接口列表 toArray();
方法例如:
List<String> list = Arrays.asList("A", "B", "C");
String[] array = list.toArray(new String[list.size()]);
System.out.println(Arrays.toString(array));