我正在尝试搜索使用名为Name的自定义对象的Java LinkedList。我需要搜索名字(Name中的my compareTo方法已经比较了姓氏,因为我需要用它来按姓氏排序)。 Name有一个名为getFirstName()的观察者方法。
我在从LinkedList访问名字方面没有任何成功。这是我想要做的,但这(显然)不起作用。
if (iterator.next().getFirstName().equals(inputSearch))
有人能指出我正确的方向吗?
这是我目前正在尝试编写的完整方法:
// Creating a method to search for a first name
static void searchName()
{
Scanner inData = new Scanner(System.in);
// Label to request input from user
System.out.println("Enter the first name that you would like to search for:");
// Setting variable to capture input
String inputSearch = inData.next();
// Creating an iterator to search through the list
iterator = list.iterator();
// While loop to search each entry
while (iterator.hasNext())
{
if (iterator.next().getFirstName().equals(inputSearch))
{
System.out.println("MATCH FOUND: " + iterator.next());
}
}
}
答案 0 :(得分:2)
您正在拨打iterator.next()
两次。第二次将超过您想要的项目。而是将第一次调用的返回值保存到iterator.next()
并使用它。
while (iterator.hasNext())
{
Name item = (Name) iterator.next();
if (item.getFirstName().equals(inputSearch))
{
System.out.println("MATCH FOUND: " + item);
}
}
或更具惯用性
for (Name item : list)
{
if (item.getFirstName().equals...
}
答案 1 :(得分:2)
while (iterator.hasNext()) {
if (iterator.next().getFirstName().equals(inputSearch)) { //iterator.next()
System.out.println("MATCH FOUND: " + iterator.next()); //iterator.next()
}
}
由于您正在调用next()两次,因此打印时它将是下一个对象。
尝试存储iterator.next()以相应的类型返回的内容,如果成功则使用它进行比较和打印。
前:
while(iterator.hasNext(){
Name name=iterator.next();
if(name.getFirstName().equals(inputSearch)){
System.out.println("Match Found"+name);
}
}
这是我看错了。不知道其他任何事情。