Sorting a double value of an object within an arrayList
arraylist, double, java
Solution
To use a `Comparator`:
Collections.sort(myList, new Comparator<Chromosome>() {
@Override
public int compare(Chromosome c1, Chromosome c2) {
return Double.compare(c1.getScore(), c2.getScore());
}
});
If you plan on sorting numerous `List`s in this way I would suggest having `Chromosome` implement the `Comparable` interface (in which case you could simply call `Collections.sort(myList)`, without the need of specifying an explicit `Comparator`).
Problem
I'm trying to sort my custom class chromosome by the value of their score attribute which is a double. These chromosomes are stored within an ArrayList. I know I have to use a comparator but I've read so many differing opinions online in the last hour that I'm utterly confused. Attached is my code, if someone could point me in the right direction I would be much appreciated. ``` public class Chromosome { public Gene[] genes; public double score; public Chromosome(int l) { genes = new Gene[l]; } public int getLength() { return genes.length; } public void printChromo() { for(int i=0;i<this.genes.length;i++) { System.out.println(""+this.genes[i].teacher+","+ this.genes[i].lecture+","+ this.genes[i].room+","+ this.genes[i].time+""); } } public void setScore(double score) { this.score=score; } public double getScore() { return this.score; } } ``` Don't know this make a difference but the score can only be a double between and including 0.0 to 1.0