2016-12-14 18 views
3

私はComparableインターフェイスを使用してArrayListをソートしようとしています。あなたが偉大なヒント/フィックスを持っているなら、私はそれを働かせるようには見えません!Netbeans java sort(Comparableを使用)

ここでは、会社の従業員(werknemers)のArrayListのを保持している(bedrijf)クラスの:

package nl.hva.oop1.bedrijf.models; 

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 

public class Bedrijf { 
    private String naam; 
    private List<Persoon> medewerkers = new ArrayList<Persoon>(); 

    public Bedrijf (String naam) { 
     this.naam = naam; 
    } 

    public void printInkomsten() { 
     String inkomstenText = "Inkomsten van alle personen: "; 

     Collections.sort(medewerkers); //I want to sort the ArrayList here 

     for (Persoon p : medewerkers) { 
      if (p.berekenInkomsten() != 0) 
       inkomstenText += "\n\t" + p.toString() + ", inkomsten: " + p.berekenInkomsten(); 
      else 
       inkomstenText += "\n\t" + p.toString() + ", bedankt voor uw inzet!"; 
     } 

     System.out.println(inkomstenText); 
    } 

    public int aantalManagers() { 
     int managers = 0; 

     for(Persoon p : medewerkers) { 
      if(p instanceof Manager) 
       managers++; 
     } 

     return managers; 
    } 

    public void neemInDienst(Persoon p) { 
     this.medewerkers.add(p); 
    } 

    @Override 
    public String toString() { 
     String bedrijfText = "Bedrijf HvA heeft " + medewerkers.size() + " medewerkers: "; 

     for (Persoon p : medewerkers) { 
      bedrijfText += "\n\t" + p.toString(); 
     } 

     return bedrijfText + "\n" ; 
    } 
} 

ここでは、抽象人(persoon)クラス(サブクラスを持っている)である。

package nl.hva.oop1.bedrijf.models; 

public abstract class Persoon implements Comparable<Persoon> { 
    private String naam; 

    public Persoon(String naam) { 
     this.naam = naam; 
    } 

    public abstract double berekenInkomsten(); 

    @Override 
    public int compareTo(Persoon p) { 
     return this.naam.compareTo(p.naam); 
    } 

    @Override 
    public String toString() { 
     return naam; 
    } 
} 

そして、Comparableインタフェース:

package nl.hva.oop1.bedrijf.models; 

public interface Comparable<E> { 
    public int compareTo(E o); 
} 
+0

いいえ、独自のComparableインターフェイスを作成しないでください! –

答えて

3

これはあなたの間違いです:

そして、Comparableインタフェース:

package nl.hva.oop1.bedrijf.models; 

public interface Comparable<E> { 
    public int compareTo(E o); 
} 

独自のComparableインタフェースを作成しないでください。代わりにComparable interface provided by Core Javaを使用してください。これは、Collections.sort(...)が認識する唯一のものです。

+0

私が作ったComparableインターフェイスを削除しました。 – Carrier

+0

@Carrier:良い取引! –

0

を交換あなたが明示的にあなたの コンパレータを割り当てるには、このAPI

public static <T> void sort(List<T> list, Comparator<? super T> c) 

を使用する必要があります独自のコンパレータを使用するために

Collections.sort(medewerkers,your class object that implement Comparator Interface); //I want to sort the ArrayList here 

Collections.sort(medewerkers); //I want to sort the ArrayList here 

そして、コードにコンパイラインターフェイスを実装しているクラスはありませんでした。

関連する問題