我在类中有一个arrayList,并且有一个getter。我需要创建一个方法,该方法返回一个arrayList,该arrayList填充了第一个arrayList中与String arg同名的所有文件。这就是我提出来的。
ArrayList<File> dirs = new ArrayList<File>(); // filled with files
public ArrayList<File> getDirectoriesNamed(String fileName) {
ArrayList<File> files = new ArrayList<File>();
for (File file : dirs) {
if (file.getName() == fileName) //problem is here
files.add(file);
}
return files;
}
然而,当我尝试这个时,我得到一个空的arrayList。而且我发现原因是因为if声明...有什么理由说我不应该看到它不起作用吗?
答案 0 :(得分:0)
您正在使用'=='比较两个字符串,使用file.getName().equals(fileName)
答案 1 :(得分:-1)
两件事......
1)确保包含扩展名,例如filename.txt作为String fileName。
2)对象应该与.equals()进行比较,如果它是一个字符串并且您担心有.equalsIgnoreCase()。我很确定==对你来说不是问题,即使对象应该以不同的方式进行比较==在java中对某些字符串对象有效。请注意,仅仅因为它起作用并不意味着它是正确的。