java - 使用数组、列表还是数千个字符串?

标签 java arrays string list

我有以下获取目录名称的方法:

    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;
    }

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

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

最佳答案

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

如果您需要内存效率,根据您稍后使用列表的方式,您可以使用类似 trie 的内容。或Bloom filter .

关于java - 使用数组、列表还是数千个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13372824/

相关文章:

java - 在 Java 中交换两个字符串,通过将它们传递给实用函数,但不返回对象或使用包装类

java - 安卓分享按钮

java - 安卓Java : Fragments returning null view in onCreateView()

arrays - 将 bsxfun 与匿名函数一起使用

python - 将字符串(字母)从文件文本转换为整数

php - 如何检查与php中的随机字符匹配的数组数据?

javascript - 将 javascript 数组传递给 jqplot 图表

java - 如何将 .cer/.p12 导入移动应用程序

java - 打印字符串数组中的所有名称

java - 一类中有多个 FlowLayout?