我有一个存储多个具有3个值的对象的ArrayList:title, fileName, tuthor
。我想在将对象添加到ArrayList之前检查fileName的值是否已经存在。
PhotographArrayList photos = new PhotographArrayList();
Photograph photo;
photo = new Photograph();
photo.submitPhotograph("Enter photograph details: \n");
if(photos.find (photo.photoExist()) !=null)
System.out.println("\nError: File already in use\n");
else
photos.add(photo);
break;
这就是我目前检查照片文件名是否已存在的方式,并且我从ArrayList
类调用此方法
public Photograph find(String aEmail) {
int index = id.indexOf(aEmail);
if(index == -1)
return null;
else return photos.get(index);
}
但是这段代码有效,但很难在系统上使用Junit测试,我想在搜索true
时找到一种获得false
/ ArrayList
答案的方法有价值。
很抱歉,如果我很难理解我的Java知识是有限的。
我的arrayList类是:
public class PhotographArrayList {
ArrayList<Photograph> photos;
ArrayList<String> id;
public PhotographArrayList() {
photos = new ArrayList<Photograph>();
id = new ArrayList<String>();
}
public int getSize() {
return photos.size();
}
public void add(Photograph anPhoto) {
photos.add(anPhoto);
id.add(anPhoto.getAuthor());
}
public void print(String header) {
for (int i=0; i<photos.size(); i++)
System.out.println(photos.get(i));
}
public Photograph find(String aEmail) {
int index = id.indexOf(aEmail);
if(index == -1)
return null;
else return photos.get(index);
}
答案 0 :(得分:1)
您应该使用Arraylist<Photograph>
而不是创建特定的类。然后,您可以覆盖Photograph.equals
以仅检查所需的属性,因此contains(Object)
方法可以直接进行检查。
答案 1 :(得分:0)
如果您想按照照片标题进行搜索,并希望照片列表按照标题唯一,那么您可以考虑使用HashSet
其中 -
equals()
类title
的{{1}}方法。 Photograph
hashCode()
方法
克里特照片的新title
,如 -
HashSet
现在,在向Set<Photograph> photoGraphSet = new HashSet<PhotoGraph>();
添加任何项目之前,您可以检查photoGraphSet
是否包含任何给定标题的照片 -
photoGraphSet
希望它会有所帮助。
感谢。