gpt4 book ai didi

java - 我可以使用 FileNameExtensionFilter 过滤出文件列表吗?

转载 作者:行者123 更新时间:2023-11-29 07:12:51 26 4
gpt4 key购买 nike

我有一个包含许多条目的大型集合:Set<File> allFiles .

使用以下算法遍历此 Set 是否可行?有更好的方法吗?

Set<File> allFiles = // ...100,000+ entries
Set<File> filteredList = new LinkedHashSet<File>();

FileNameExtensionFilter filter = new FileNameExtensionFilter("Extensions accepted", "a", "b", "c");

for (File file : allFiles) {
if (filter.accept(file)) {
filteredList.add(file);
}
}

万一有人问,allFiles Set 在其他地方预先填充,不一定使用 File.listFiles() 方法收集。

最佳答案

如果说实用的话,你的意思是可以在 Java 中写成 5 行,是的。当您想要过滤列表时,没有更干净的选择(与具有功能结构的语言(如 Scala 及其过滤方法)相反)。

我个人看不出您可以如何做得更好,如果您的用例真的是过滤掉扩展名不正确的文件,我会在 Java 中做同样的事情。

如果您担心使用 javax.swing 中的接口(interface)和类,您不应该,因为这两个类仅依赖于 java.iojava.util .Locale(用于根据英语语言环境将文件名设置为小写),因此它们与 java.io 中的 FilenameFilter 一样干净。如果您的交易真的是根据不区分大小写的扩展名进行过滤,那么您绝对应该这样做,我的 eclipse 看到的唯一选择是 com.google.gwt.thirdparty.guava.common.io.PatternFilenameFilter 实现 java.io.FilenameFilter,但是你有一个新的依赖关系,你写了一个 Regex 模式,它的可读性和可维护性远不如你的扩展。因此,如果这确实是您的用例,我会继续使用 FileNameExtensionFilter

关于java - 我可以使用 FileNameExtensionFilter 过滤出文件列表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12192051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com