Java 关于 equals 和 compareTo 方法的问题

Java questions on equals and compareTo method

嗨,我是 Java 的新手,在 linkedList 上运行 2 个方法时遇到这个问题。

我写的find函数总是return false。 find方法是以一个E类型的元素作为参数,return如果该项在链表中则为true,否则为false。

max 方法是 return 如果列表不为空则列表中的最大元素(在本例中为最长字符串),如果列表为空则为 null。比较必须由 compareTo() 完成。 我写的最大值只是查看每个元素(字符串)的第一个字母。

非常感谢任何帮助!

  public boolean find(E e){
      LinkedListTest<E>.Node node = null;
    Node current =node;
      while (current != null){
          if (current.equals(e)){
              return true;
          }
          else{
              current=current.next;
          }
      }
      return false;
  }
  public E max(){
      Iterator<E> iterator=iterator();
      E max = iterator.next();
      while (iterator.hasNext())
      {  
         E next = iterator.next();
         if (max.compareTo(next) > 0) 
            max = next;
      }
    return max;
  }

你的 find 总是 returns false 因为你将 nodecurrent 初始化为空,所以永远不会进入循环。此外,您应该将 e 与项目进行比较,而不是与节点进行比较。

大概应该是:

public boolean find(E e){
    Node current = head;
    while (current != null){
        if (current.item.equals(e)){