Reputation: 16651
I have a record object
public Record{
double simiADD;
}
I Have a List of Record objects and I want to Sort on simiADD. Record with less value of simiADD should occur first and record with more value of simiADD should occur later in the sorted list. I wanted to do this operation in a seprate method and not implementing the comparator in Record class.
Upvotes: 3
Views: 2433
Reputation: 234795
If you don't want to define a comparison function inside the Record class:
Collections.sort(recordList, new Comparator<Record>() {
public int compare(Record object1, Record object2) {
return Double.compare(object1.simiADD, object2.simiADD);
}
}
);
Upvotes: 4
Reputation: 23268
Here's a code example
public class Record implements Comparable<Record> {
public double simiADD;
public int compareTo(Record r) {
return Double.compare(this.simiADD, r.simiADD);
}
}
Then simply using any sort method will use the overridden compareTo for the Record class.
Upvotes: 1
Reputation: 5327
I assume that you meant that you don't want to implement "Comparable" interface in your class. Use Comparator and Collection's sort static method:
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);
}
}
Upvotes: 1
Reputation: 3380
Read the JavaDoc for the Comparable interface. http://download.oracle.com/javase/6/docs/api/java/lang/Comparable.html. Or did you mean "don't want to implement Comparable" instead of "Comparator"?
Comparable is quite standard actually, which is good for the maintenance of your code. The sort method in Collections is based on it, so it works pretty well.
Upvotes: 0