【发布时间】:2019-05-03 17:57:51
【问题描述】:
我可以使用 contains() 来检查我尝试在 Arraylist 中插入的元素是否已经存在?
protected void addTeacher(Teacher t){
if (!(teacherList.contains(t)))
teacherList.add(t);
}
我创建了一个教师类。 谢谢,
【问题讨论】:
我可以使用 contains() 来检查我尝试在 Arraylist 中插入的元素是否已经存在?
protected void addTeacher(Teacher t){
if (!(teacherList.contains(t)))
teacherList.add(t);
}
我创建了一个教师类。 谢谢,
【问题讨论】:
在您的 Teacher 类中,您应该重写 equals 方法并为程序定义您的两个对象相等的策略。然后就可以完美使用 contains 方法了。
请注意,更好的解决方案是使用 Set。
Set 永远不会在其中保存重复的对象。使用 Set you 应该覆盖 equals 和 hashCode 方法。
参考这个帖子,我为其他有类似问题的人解释清楚 -> equals and hashCode methods
【讨论】:
是的,您可以使用 contains 方法。如果您追求有意义的(即两个对象的所有字段具有相同的值)相等,而不仅仅是对象引用,则需要实现 equals() 方法。
查看这里的 Oracle 文档:https://docs.oracle.com/javase/7/docs/api/java/util/List.html#contains(java.lang.Object)
【讨论】:
是的,使用 .contains() 应该适用于您的情况。但是,根据其余代码的外观,您可能需要考虑使用 ArrayLists 以外的其他代码。例如,如果您使用set,则不必使用.contains(),因为set 不能保存重复项。
【讨论】: