2016-06-28 6 views
1

私は車の名前のリストを持っています。このリストには車のオブジェクトがいくつかあります。すべてのオブジェクトの値は互いに異なります。ここにあるすべてのオブジェクトにユニットの名前を持つカスタムフィールドがあり、ユニットにはunitTypeという名前の別のフィールドがあります。「T20」、「VT11」などです。 この車を並べ替えたいunitTypeTypeのように: 車(0).getUnit()。getUnitType()。equals( "T20")最初にすべての値をソートし、次に他の "VT11"を選択し、次に他のすべて... どうすればいいですか?ここにJavaの任意の適切なメソッドですか?Javaのオブジェクト配列をソートする方法

私のユニットクラス:

package com.vehicletracking.vtss.classes.bean; 

import java.io.*; 

public class Unit implements Serializable{ 
    private int code; 
    private int unitId; 
    private String unitType; //X8, X1, X1+, VT10, VT200, SPT100 
    private Sim sim; 
    private String commType; //CSD, SMS, GPRS, AUTO 
    private int modemCode; 
    private long IMEI; 
    private String serialNo; 
    private InputReportProfile inputReportProfile; 
    private String firmware; 
    private String packageName; 
    private String password; 

    public Unit() { 
    } 

    public Unit(int unitId) { 
     this.unitId = unitId; 
    } 

    public Unit(int unitId, String unitType) { 
     this.unitId = unitId; 
     this.unitType = unitType; 
    } 

    public Unit(int unitId, String unitType, Sim sim) { 
     this.unitId = unitId; 
     this.unitType = unitType; 
     this.sim = sim; 
    } 

    public void setUnitId(int unitId) { 
     this.unitId = unitId; 
    } 

    public int getUnitId() { 
     return this.unitId; 
    } 

    public void setUnitType(String unitType) { 
     this.unitType = unitType; 
    } 

    public String getUnitType() { 
     return this.unitType; 
    } 

    public void setSim(Sim sim) { 
     this.sim = sim; 
    } 

    public void setCommType(String commType) { 
     this.commType = commType; 
    } 

    public void setModemCode(int modemCode) { 
     this.modemCode = modemCode; 
    } 

    public void setSerialNo(String serialNo) { 
     this.serialNo = serialNo; 
    } 

    public void setCode(int code) { 
     this.code = code; 
    } 

    public void setInputReportProfile(InputReportProfile inputReportProfile) { 
     this.inputReportProfile = inputReportProfile; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public void setIMEI(long IMEI) { 
     this.IMEI = IMEI; 
    } 

    public Sim getSim() { 
     return this.sim; 
    } 

    public String getCommType() { 
     return commType; 
    } 

    public int getModemCode() { 
     return modemCode; 
    } 

    public String getSerialNo() { 
     return serialNo; 
    } 

    public int getCode() { 
     return code; 
    } 

    public InputReportProfile getInputReportProfile() { 
     return inputReportProfile; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public long getIMEI() { 
     return IMEI; 
    } 

    public int hashCode() { 
     return unitId; 
    } 

    public boolean equals(Object obj) { 
     if (obj instanceof Unit) { 
      return this.unitId == ((Unit) obj).getUnitId(); 
     } 
     return false; 
    } 

    public String toString() { 
     return this.unitId + "/" + this.unitType; 
    } 

    public String getFirmware() { 
     return firmware; 
    } 

    public void setFirmware(String firmware) { 
     this.firmware= firmware; 
    } 

    public String getPackageName() { 
     return packageName; 
    } 

    public void setPackageName(String packageName) { 
     this.packageName = packageName; 
    } 


} 

車のリスト: 一覧車。

+3

コンパレータを使用して、それを上書きして独自の並べ替えタイプを定義することができます。最後のinterまたは文字列で並べ替えることができます。 Collection.sort(whattosor、新しいComparator)....... –

+1

タイトルで言うように**配列**を持っているのか、質問で言うように 'List'ですか? (配列は 'List'ではなく、' ArrayList'は 'List'で配列ではありません)。 – Jesper

+0

これは複製です。並べ替える方法について質問する多くの質問があります。 「Javaでオブジェクトの配列をソートする方法」(http://stackoverflow.com/q/18895915/217324)を参照してください。 –

答えて

1

ComparableのためのJava 8ドキュメントから:

このインタフェースを実装する各クラスのオブジェクトに全体順序付けを強制します。この順序付けは、クラスの自然順序付けと呼ばれ、クラスのcompareToメソッドは、自然比較メソッドと呼ばれます。

このインターフェイスを実装するオブジェクトのリスト(および配列)はCollections.sort(およびArrays.sort)によって自動的にソートできます。このインタフェースを実装するオブジェクトは、ソートされたマップのキーとして、またはソートされたセットの要素として、コンパレータを指定する必要なく使用できます。

上記によると、Comparableを実装し、オブジェクトのcompareToの実装を提供するだけで済みます。 Collections.sortは残りの部分を処理します。

関連する問題