使用数组,列表,还是成千上万的字符串?

jad*_*jan 2 java arrays string list

我有以下方法获取direcory名称:

    private List<String> getListOfDirectories(String rootDirectoryPath) {

        List<String> listOfDirectories = new ArrayList<>();

        File directory = new File(rootDirectoryPath);
        File[] listOfFiles = directory.listFiles();

        for (int i = 0; i < listOfFiles.length; i++) {

            if (listOfFiles[i].isDirectory()) {
                listOfDirectories.add(listOfFiles[i].getName());
            }
        }

        return listOfDirectories;
    }
Run Code Online (Sandbox Code Playgroud)

我暂时存储(不确定是否存储是正确的术语)列表中的这些目录名称.如果有50000个目录名,那么List是正确的选择吗?它是否具有内存效率,是否可以处理50000或更多字符串?

编辑:我正在开发一个应用程序,在本地目录中搜索html文件并解析这些html文件.

Mat*_*all 5

List只是一个接口,所以它真的取决于列表实现.假设ArrayList<String>,它将大致与内存一样高效String[].数组列表的最坏情况是底层数组是一个常数因子(通常为2),大于它实际存储的数据量.

如果你需要内存效率,取决于你以后如何使用列表,你可以使用像trieBloom过滤器这样的东西.