2017-03-29 8 views
0

Listクラスでremoveメソッドを実装する際に問題があります。私は最初にオブジェクトをファイルに書き出してから、それらのオブジェクトを取得してリンクリストの中に入れています。しかし、リンクリスト全体を調べて平等をチェックしようとすると、オブジェクトがそこにあることがわかっていても一致しません。私も得ることはできません。それは動作するように見える。リンクリストのメソッドが機能しない

package ProjectOne; 

public class List<T> { 
    private LLNode<T> list; 
    private int numberOfNodes = 0; 
    private LLNode<T> location; 
    private LLNode<T> previous; 
    protected boolean found; 
    public List() { 
     list = null; 
    } 
    public void add(T element) { 
     if (numberOfNodes == 0) { 
      list = new LLNode<T>(element); 
      numberOfNodes++; 
     } 
     else { 
     LLNode<T> newNode = new LLNode<T>(element); 
     newNode.setLink(list); 
     list = newNode; 
     } 
    } 


    public void find(T target) { 
     location = list; 
     found = false; 
     while(location !=null) { 
      System.out.println(target.equals(location.getInfo())); 
      if(location.getInfo().equals(target)) { 
       found = true; 
       return; 
      } 
      else { 
       previous = location; 
       location = location.getLink(); 
      } 
     } 
    } 

    public boolean remove(T element) { 
     this.find(element); 
      if(found) { 
       if(list == location) list = list.getLink(); 
       else previous.setLink(location.getLink()); 
      } 
      return found; 
    } 

    public LLNode<T> getList() { 
     return list; 
    } 



    public String toString() { 
     LLNode<T> currentNode = list; 
     String info = ""; 
     while(currentNode !=null) { 
      info +=currentNode.getInfo(); 
      currentNode = currentNode.getLink(); 
     } 
     return info; 
    } 

} 

これらは私がSystem.out.println(list.remove(p1)); は私が 偽 偽の出力を得る呼び出すとき、私は

Patient p1 = new Patient("Alex", "1123 metropolitan", new Date("11/20/1997")); 
p1.setFirstVisit(new Date("11/20/1997")); 
p1.setHeight(72); 
p1.setLastVisit(new Date("11/20/1997")); 
p1.setWeight(200); 
out.writeObject(p1); 

Patient p2 = new Patient("John", "200 avenue of americas", new Date("12/20/1999")); 
p2.setFirstVisit(new Date("11/11/2005")); 
p2.setHeight(5); 
p2.setLastVisit(new Date("11/21/2010")); 
p2.setWeight(150); 
out.writeObject(p2); 

Patient p3 = new Patient("Sarah", "Park avenue", new Date("09/07/1960")); 
p3.setFirstVisit(new Date("05/11/1977")); 
p3.setHeight(75); 
p3.setLastVisit(new Date("01/21/2017")); 
p3.setWeight(110); 
out.writeObject(p3); 

Patient p4 = new Patient("Malcolm", "56street", new Date("05/28/1977")); 
p4.setFirstVisit(new Date("01/11/1990")); 
p4.setHeight(75); 
p4.setLastVisit(new Date("8/21/2016")); 
p4.setWeight(155); 
out.writeObject(p4); 

ただし、ファイルに出て書いています、多くの目的の一つである 偽 偽 偽 と最後はメソッドの戻り値であり、最初の4つはデバッグしようとしています。

答えて

2

Patientクラスのequalsメソッドとhashcodeメソッドをオーバーライドするようにしてください。

関連する問題