Saurabh Kumar
Saurabh Kumar

Reputation: 16651

How to sort a list of objects with some specific property

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

Answers (4)

Ted Hopp
Ted Hopp

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

Jesus Ramos
Jesus Ramos

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

Erhan Bagdemir
Erhan Bagdemir

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

Vicente Plata
Vicente Plata

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

Related Questions