2016-06-28 3 views
1

나는 자동차의 이름을 가진 객체 목록을 가지고 있으며이 목록에는 차량 객체가 있습니다. 모든 오브젝트 값은 서로 다릅니다. 여기에있는 모든 개체에는 단위 이름이있는 사용자 정의 필드가 있고 단위는 unitType ... "T20", "VT11"또는 다른 어떤 이름의 다른 필드입니다. 이 자동차를 정렬하고 싶습니다. unitType 유형은 다음과 같습니다. 자동차 (0) .getUnit(). getUnitType(). equals ("T20") 먼저 모든 값을 정렬 한 다음 다른 "VT11"을 선택한 다음 다른 모든 ... 어떻게하면됩니까 ?? 여기에 자바에서 적절한 방법이 무엇입니까?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; 
    } 


} 

자동차 목록 : 목록 자동차; Comparable 자바 8 설명서에서

+3

당신은 Comparator를 사용하고 그것을 재정 의하여 자신의 정렬 유형을 정의 할 수 있습니다. 마지막 정렬 또는 문자열로 정렬 할 수 있습니다. Collection.sort (whattosor, 새로운 Comparator) ....... –

+1

제목에서 말한대로 배열 ** 또는 질문에서 말하는 'List'가 있습니까? (배열은'List'가 아니고'ArrayList'는 배열이 아닌'List'입니다.) – Jesper

+0

이것은 복제본입니다. 정렬하는 방법에 대해 묻는 질문이 많이 있습니다. [Java에서 객체의 배열을 정렬하는 방법?] (http://stackoverflow.com/q/18895915/217324)을 참조하십시오. –

답변

1

:

이 인터페이스를 구현하는 각 클래스의 오브젝트에 전체 순서를 부과한다. 이 순서 부를 클래스의 자연 순서 부라고 부르며 클래스의 compareTo 메소드는 자연 비교 메소드라고합니다.

이 인터페이스를 구현하는 객체의 목록 (및 배열)은 Collections.sort (및 Arrays.sort)에 의해 자동으로 정렬 될 수 있습니다. 이 인터페이스를 구현하는 객체는 비교자를 지정할 필요없이 정렬 된지도의 키 또는 정렬 된 집합의 요소로 사용할 수 있습니다.

위의 내용에 따르면 Comparable을 구현하고 compareTo에 대한 구현을 제공해야합니다. Collections.sort는 나머지를 처리합니다.

관련 문제