【问题标题】:How to sort object array in Java [duplicate]如何在Java中对对象数组进行排序[重复]
【发布时间】:2016-10-30 17:52:58
【问题描述】:

我有一个带有汽车名称的对象列表,在这个列表中我有一些车辆对象。所有对象的值彼此不同。这里的所有对象都是自定义字段,名称为单位,单位中是另一个名称为 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;
    }


}

汽车清单: 列出汽车;

【问题讨论】:

  • 您可以使用 Comparator 并通过覆盖它来定义您自己的排序类型,按最后一个 inter 或字符串对它们进行排序。 Collection.sort(whattosor, new Comparator).......
  • 您是否有标题中所说的 array 或问题中所说的 List? (数组不是ListArrayListList,而不是数组)。
  • 这是重复的。有很多关于如何排序的问题。见How to sort an array of objects in java?

标签: java list sorting object arraylist


【解决方案1】:

来自Comparable 的 Java 8 文档:

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

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

根据上述,您只需要实现 Comparable,并为您的对象提供 compareTo 的实现。 Collections.sort 负责其余的工作。

【讨论】:

    猜你喜欢
    • 2016-10-14
    • 2018-02-01
    • 2019-05-30
    • 2021-04-15
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    相关资源
    最近更新 更多