【发布时间】:2016-05-15 16:37:59
【问题描述】:
我有一个名为 Subject 的类,它将存储一些信息,如主题名称和主题代码,我正在努力,因为我想做的是让它遍历 arraylist 中的记录列表并添加新记录,如果它尚不存在。请帮忙,我已经尝试在这里搜索答案,但似乎无法找到它。
如果循环不是正确的做法,请指出正确的方向。 谢谢
//The Class
public class Subject {
private String name;
private String subjectCode;
public Subject(){
}
public Subject(String name, String subjectCode){
this.name = name;
this.subjectCode = subjectCode;
}
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
public String getSubjectCode(){
return this.subjectCode;
}
public void setSubjectCode(String subjectCode){
this.subjectCode = subjectCode;
}
//The Main method
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ArrayList<Subject> subjectList = new ArrayList<>();
//Test records
subjectList.add(new Subject("Java 1", "ITC101"));
subjectList.add(new Subject("Java 2", "ITC201"));
subjectList.add(new Subject("Java 3", "ITC301"));
String newGetName;
String newSubjectCode;
do {
System.out.print("Enter Subject Name: ");
newGetName = input.nextLine();
System.out.print("Enter Subject Code: ");
newSubjectCode = input.nextLine();
for(int i = 0; i < subjectList.size(); i++){
if(!subjectList.get(i).getName().contains(newGetName) && !subjectList.get(i).getSubjectCode().contains(newSubjectCode)){
subjectList.add(new Subject(newGetName, newSubjectCode));
} else {
System.out.println("We have a match ");
}
}
} while(!"0".equals(newGetName));
}
【问题讨论】:
-
如果您需要一个没有重复的容器,请考虑使用
Set。 -
您需要遍历整个
subjectList以检查是否已经包含newGetName(因为当当前subject不匹配时,您将多次添加它)。考虑覆盖subject中的等于并使用Set。 -
你的类应该提供适当的 equals 方法进行比较。