繁体   English   中英

如何对具有某些特定属性的对象列表进行排序

[英]How to sort a list of objects with some specific property

我有一个记录对象

 public Record{
   double simiADD;
 }

我有一个Record对象列表,我想在simiADD上排序。 应首先出现simiADD值较小的记录,并且稍后将在排序列表中出现具有更多simiADD值的记录。 我想在一个单独的方法中执行此操作,而不是在Record类中实现比较器。

如果您不想在Record类中定义比较函数:

Collections.sort(recordList, new Comparator<Record>() {
        public int compare(Record object1, Record object2) {
            return Double.compare(object1.simiADD, object2.simiADD);
        }
    }
);

我假设你的意思是你不想在你的班级中实现“Comparable”界面。 使用Comparator和Collection的sort静态方法:

import java.util.*;
public class EmpSort {
    static final Comparator<Employee> SENIORITY_ORDER =
                                 new Comparator<Employee>() {
        public int compare(Employee e1, Employee e2) {
            return e2.hireDate().compareTo(e1.hireDate());
        }
    };

    // Employee database
    static final Collection<Employee> employees = ... ;

    public static void main(String[] args) {
        List<Employee>e = new ArrayList<Employee>(employees);
        Collections.sort(e, SENIORITY_ORDER);
        System.out.println(e);
    }
}

这是一个代码示例

public class Record implements Comparable<Record> {
    public double simiADD;

    public int compareTo(Record r) {
        return Double.compare(this.simiADD, r.simiADD);
    }
}

然后简单地使用任何排序方法将使用重写的compareTo作为Record类。

阅读Comparable接口的JavaDoc。 http://download.oracle.com/javase/6/docs/api/java/lang/Comparable.html 或者你的意思是“不想实施可比”而不是“比较者”?

实际上,可比较是非常标准的,这有利于维护代码。 集合中的排序方法基于它,因此它运行良好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM