2012-05-03 12 views
0

私は、さまざまな基準で機器を見つけるためのメソッド( "findEquipements")を作成しようとしていますが、いくつか問題があります。Javaでの検索方法の構想

  1. 結果を追加すると、それぞれの基準に従って、結果に同じ機材が何度も表示されます。

  2. 結果リスト内の最初の機器が、最も一致した基準を持つ機器になるように、結果を注文したいと思います。

コード:

public interface EquipementService { 
    List<Equipement> findEquipements (SearchEquipement equipementSerach); 
} 

私のインターフェイス、

public class SearchEquipement{ 

    private String marque ; 
    private String type ; 
    private Date dateAchat ; 
    private String user ; 

    public String getMarque(){ 
     return this.marque ; 
    } 

    public void setMarque(String marque){ 
     this.marque = marque ; 
    } 

    public String getType(){ 
     return this.type ; 
    } 

    public void setType(String type){ 
     this.type = type ; 
    } 

    public String getUser(){ 
     return this.user ; 
    } 

    public void setUser(String user){ 
     this.user = user ; 
    } 

    public Date getDateAchat(){ 
     return this.dateAchat ; 
    } 

    public void setDateAchat(Date dateAchat){ 
     this.dateAchat = dateAchat ; 
    } 
} 
+1

使用コンパレータおよびソートされたコレクション – SJuan76

+0

@elaich 'equals'メソッドを追加する必要があります。 –

答えて

0
  1. オーバーライドハッシュコードとSearchEquipementクラスのメソッドを等しくしました。デバッグの目的で、toStringをオーバーライドすることをお勧めします。
  2. は、同等のインターフェイスを実装し、compareToメソッドをオーバーライドして結果を順序付けします。

  3. 使用Collections.sort()に適切に整理「一覧リスト」

サポートコードのリスト項目 -

public class EquipmentComparable implements Comparator<SearchEquipement>{ 
    @Override 
    public int compare(Equipement eq1, Equipement eq2) { 
     //todo 
    } 
} 


    List<Equipement> equipmentList = EquipementService.findEquipements (equipementSerach); 
    Collections.sort(equipmentList,new EquipmentComparable());