我正在尝试搜索使用名为 Name 的自定义对象的 Java LinkedList。我需要搜索名字(名称中的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());
}
}
}
最佳答案
您调用了 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...
}
关于java - 搜索 Java 链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13021097/