2015-04-28 22 views
1

Salut Je suis très nouveau à Java et ai ce problème avec 2 méthodes opérant sur linkedList.Java questions sur égal et compareTo méthode

La fonction find que j'ai écrite retourne toujours false. La méthode find consiste à prendre un élément de type E comme argument et renvoie true si l'élément est dans la liste liée, ou false dans le cas contraire.

La méthode max est de renvoyer l'élément maximum (Chaîne la plus longue dans ce cas) dans la liste si la liste n'est pas vide ou null si la liste est vide. La comparaison doit être faite par compareTo(). Le maximum que j'ai écrit ne regarde que la première lettre de chaque élément (chaîne).

Toute aide est grandement appréciée!

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; 
    } 

Répondre

3

Votre find retourne toujours faux parce que vous initialisez node et current null, de sorte que la boucle est ne sont jamais entrées. En outre, vous devez comparer e à l'élément, pas au nœud.

Il devrait probablement:

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

Salut, merci pour la réponse! Lorsque j'appelle la fonction, ai-je raison de la traiter comme une chaîne? System.out.println (lst.find ("Mango")); Parce que ma préoccupation est, le paramètre est E, mais j'appelle la chaîne "Mango". – Robert

+0

@Robert Oui, vous avez raison, puisque vous avez créé un 'LinkedListTest ', donc E est String dans ce cas. – Eran

+0

Merci pour votre aide! Je suis toujours intrigué par la fonction max. – Robert