我有这样的File[]列表。
List<File[]> fileList = new ArrayList<File[]>();我需要将它转换成类似于这个File[] finalFiles的File[]。
有没有什么方法可以将Files[]数组转换为单个File[]
发布于 2016-09-21 15:50:10
Java 7解决方案:
List<File[]> fileList = new ArrayList<File[]>();
int count = 0;
for (int i = 0; i < fileList.size(); i++){
count += fileList.get(i).length;
}
File[] finalFiles = new File[count];
int pointer = 0;
for (int i = 0; i < fileList.size(); i++){
System.arraycopy(fileList.get(i), 0, finalFiles, pointer, fileList.get(i).length);
pointer += fileList.get(i).length;
}发布于 2016-09-21 15:50:26
使用Stream API,您可以:
File[] finalFiles = fileList.stream().flatMap(Arrays::stream).toArray(File[]::new);这将创建一个流,其中每个元素都是一个文件数组(Stream<File[]>),平面映射每个文件数组(所以我们有一个Stream<File>),并创建一个包含所有元素的新数组。
发布于 2019-11-17 07:59:15
这是完美的工作方式:
File[] finalFiles = (File[]) fileList.toArray(new File[fileList.size()]);https://stackoverflow.com/questions/39610382
复制相似问题