使用java的多列顺序

时间:2014-04-30 06:45:20

标签: java

您好我需要任何方法或解释我们如何在java中订购多个列值。 输出应该类似于MySQL中的多列顺序输出。

澄清请查看以下链接 http://www.dynamicdrive.com/forums/showthread.php?19797-ORDER-BY-Multiple-Columns

2 个答案:

答案 0 :(得分:1)

您可以使用下面的示例比较器为多个属性排序arraylist。

public class CustomeClass implements Comparator<CustomeObject> {
    public int compare(CustomeObject o1, CustomeObject o2) {
        int value1 = o1.prop1.compareTo(o2.prop1);
        if (value1 == 0) {
            int value2 = o1.prop2.compareTo(o2.prop2);
            if (value2 == 0) {
                return o1.prop3.compareTo(o2.prop3);
            } else {
                return value2;
        }
        return value1;
    }
}

基本上,只要到目前为止比较的属性相等(== 0),它就会继续比较类的每个连续属性。

答案 1 :(得分:1)

让我们说你的对象看起来像这样:

public DataObject {
    public String name;
    public int age;
    public String hairColour;
}

让我们说你想根据年龄,发色,然后是名字对它们进行排序。您可以按如下方式创建比较器:

public DataObjectComparator extends Comparator<DataObject> {
    public int compare(DataObject o1, DataObject o2) {
        // if the age is the same
        if(o1.age == o2.age) {
            // if the hair colour is the same
            if(o1.hairColour.compareTo(o2.hairColour) == 0) {
                // return the name comparison
                return o1.name.compareTo(o2.name);
            } else {  // else return the hair colour comparison
                return o1.hairColour.compareTo(o2.hairColour);
            }
        } else {  // else return the age comparison
            return o1 < o2 ? -1 : 1;
        }
    }
}