搜索Java LinkedList

时间:2012-10-22 22:50:51

标签: java search linked-list

我正在尝试搜索使用名为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());
      }
  }
} 

2 个答案:

答案 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);
     }
}

这是我看错了。不知道其他任何事情。