如何在Java中对对象数组进行排序

时间:2016-06-28 11:57:27

标签: java list sorting object arraylist

我有一个带有汽车名称的对象列表,在这个列表中我有一些车辆对象。所有对象值彼此不同。在所有对象中,这里是自定义字段,其名称为unit,单位为另一个字段,其名称为unitType ...即“T20”,“VT11”或任何其他字段。 我想根据unitType对这辆车列表进行排序,如: 如果是cars(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;
    }


}

汽车清单: 列车;

1 个答案:

答案 0 :(得分:1)

来自Comparable的Java 8文档:

  

此接口对实现它的每个类的对象强加一个总排序。这种排序被称为类的自然排序,类的compareTo方法被称为其自然比较方法。

     

实现此接口的对象的列表(和数组)可以由Collections.sort(和Arrays.sort)自动排序。实现此接口的对象可用作有序映射中的键或有序集中的元素,而无需指定比较器。

根据上面的说明,您只需要实现Comparable,并为您的对象提供compareTo的实现。 Collections.sort负责其余部分。