我需要搜索LinkedList并比较列表中的对象,这样我才不会添加重复项。我无法弄清楚如何拉节点,以便将其与我试图添加的StudentInfo对象进行比较。这是我尝试使用迭代器:
private LinkedList<CourseInfo> classes = new LinkedList<>();
public void addCourse(String cid, String name, String prof, String days,
String time, String room)
{
CourseInfo course = new CourseInfo(cid, name, prof, days, time, room);
Iterator i = classes.iterator();
while(i.hasNext())
{
if(i.equals(course))
{
System.out.println("Caught");
break;
}
}
}
我特别需要比较cid变量
答案 0 :(得分:2)
次要注意,遍历LinkedList
以检查元素是否存在是昂贵的。您可能需要考虑HashSet
。话虽如此,在您的代码中,您要将iterator
与CourseInfo
进行比较,您需要使用next()
来比较iterator
指向的元素。此外,为了推进迭代器,需要next()
(感谢Code-Apprentice的建议)否则你可能会在i.hasNext()
中无限循环。
private LinkedList<CourseInfo> classes = new LinkedList<>();
public void addCourse(String cid, String name, String prof, String days,
String time, String room)
{
CourseInfo course = new CourseInfo(cid, name, prof, days, time, room);
// Don't use raw types e.g. Iterator it
// Specify the type of element you are iterating on
// Iterator<T> it
Iterator<CourseInfo> i = classes.iterator();
while(i.hasNext())
{
CourseInfo cInfo = i.next(); // get the element pointed by the iterator
if(cInfo.equals(course))
{
System.out.println("Caught");
break;
}
}
}
for(CourseInfo ci : classes) {
if(ci.equals(course)) {
System.out.println("Caught");
break;
}
}