2016-05-11 5 views
1

In Java habe ich eine ArrayList meiner eigenen (implementiert) Ich habe eine Sortiermethode, so brauche ich 'compareTo' -Methode das ist, warum ich Comparable implementiert und die Klasse abstrakt gemacht. Aber wenn ich arraylist vom Haupt verwende, muss ich Methode mit Methode implementieren. Aber ich kann nicht verstehen, wie ich das implementieren kann. (Ich habe eine Beschränkung, zum Beispiel, wenn ich eine arraylist von 'Auftragsklasse habe, kann ich nicht vergleichbar in Auftragsklasse implementieren)Wie zu implementieren Vergleichen Sie mit Methode für benutzerdefiniertes Objekt

Arraylist

public abstract class ArrayList<T> implements Comparable 

innen Sortierfunktion

Comparable left=(Comparable)L[i]; 
    Comparable right=(Comparable)R[j]; 
    for(int k=start;k<=end;k++) 
    { 
     if(left.compareTo(right)<=0) 
     { 
      array[k]=L[i]; 
      i++; 
      left=(Comparable)L[i]; 

     } 

Von Haupt

ArrayList<Order> order = new ArrayList<Order>() { 
     @Override 
     public int compareTo(Object o) { 
      if(this)// but this main is not order class this is arraylist class 
      return 0; 
     } 
    }; 
+0

prüfen, was gesagt @Loic M.. Grundsätzlich, wenn Sie "Vergleichbare" Schnittstelle implementieren, bedeutet das, dass Sie wollen, dass dieses bestimmte Objekt mit anderen Objekten vergleichbar ist, weshalb Sie die 'compareTo (Object o)' Methode implementieren müssen. Was Sie wirklich wollen, ist, Elemente zu vergleichen, also sollten Sie eine "Vergleichbare" Schnittstelle für die Elemente in der Liste – MichaelDD

Antwort

1

Warum implementiert Ihr ArrayListComparable? Möchten Sie 2 Listen vergleichen? Wenn Sie die Elemente der Liste vergleichen oder sortieren möchten, sollten die Elemente Vergleichbar sein, aber nicht die Liste selbst.

Sie können auch einen Blick auf die folgende Frage haben: How to use Comparator in Java to sort Sie werden dann Order eine Comparator für Ihre Klasse implementieren müssen (nicht die Schnittstelle Comparable)

+0

OOps implementieren. Ich habe einen großen Fehler gemacht. Vielen Dank – Shuvo

Verwandte Themen