我有以下获取目录名称的方法:
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/