java - Java中数组的文件列表

标签 java arrays list

我想知道,为什么将 FileArraylist 更改为数组会出现问题。

public static void main(String[] args) {
    List<File> pl = new ArrayList<File>();
    pl.add(new File ("C:\\folder"));
    String[] k;
    k = pl.toArray(new String[pl.size()]);
    System.out.println(k);
}

在上面的一个简单示例中,我将得到:

Exception in thread "main" java.lang.ArrayStoreException
    at java.lang.System.arraycopy(Native Method)
    at java.util.ArrayList.toArray(Unknown Source)
    at Main.main(Main.java:25)

第二个问题:我必须传递 Arraylist 的大小吗?因为这两个版本都适用于字符串数组列表:

k = pl.toArray(new String[pl.size()]);
k = pl.toArray(new String[] {});

最佳答案

你有一个 File 对象列表,你不能把它们放在一个 String 数组中,你需要以某种方式显式转换它们(例如通过调用 File#getName())。最方便的方法可能是使用 Stream:

k = p1.stream().map(File::getName).toArray(String[]::new);

关于java - Java中数组的文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53793885/

相关文章:

java - 为什么我会遇到映射异常?

javascript - 如何从动态包含对象的变量构建对象数组

python - 使用 3 个参数在 python 中扩展切片

python - 意外的导入行为,以不同方式处理整数和列表

java - 使用 Stream 从 String 消息中获取 ArrayList<String> 中的多个单词

Java Mongodb 更新数据库对象

java - 方法的状态码

java - JDK11中HttpClient的失败重试机制

arrays - 如何在 m 排序数组中找到一个元素,其中数组的其余部分为零且未给出 m

康威的生命游戏 C