基本上,我正在尝试在Java中返回一组字符串。 但...
我的主例程将在GUI组件(可能是JList)中显示此集合,供用户选择其中一个(没有.db扩展名)。 我完全是新手(你可以看到),所以如果你认为有比LinkedHashSet更好的选择,请告诉我。
另外,我如何在主类中抓住这个集合?
到目前为止我得到了什么:
public Set GetDBFilesList() {
//returns ORDERED collection of UNIQUE strings with db filenames
LinkedHashSet a = new LinkedHashSet();
FilenameFilter dbFilter = (File file, String name) -> {
return name.toLowerCase().endsWith(".db");
};
String dirPath = "";
File dir = new File(dirPath);
File[] files = dir.listFiles(dbFilter);
if (files.length > 0) {
for (File aFile : files) {
a.add(aFile.getName());
}
}
return a;
}
答案 0 :(得分:0)
你想要一个有序且独特的集合 - LinkedHashSet是一个不错的选择。 关于你的方法的一些评论:
LinkedHashSet<File>
或LinkedHashSet<String>
files.length
是不必要的,但如果null
不是path
或发生I / O错误,您可以检查directory
a
不是一个好名字static
- 也许是在静态助手类中?Set.add
方法returns true
或false
如果项目已添加或未添加,则应检查以防万一全部放在一起:
//Your Main class
public class Main
{
public static void main(String[] args)
{
File dir = new File("");
Collection<File> dbFiles = DbFileManager.getDatabaseFiles(dir);
}
}
//Your DB File Reader Logic
public class DbFileManager
{
public static Collection<File> getDatabaseFiles(File directory)
{
Collection<File> dbFiles = new LinkedHashSet<>();
//filter code etc.
boolean success = dbFiles.addAll(directory.listFiles(filter));
//Check if everthing was added
return dbFiles;
}
}