public class SortArrayListComplex { public static void main(String[] args) { List lst = new ArrayList(); lst.add(new Data("CCC","1")); lst.add(new Data("BB", "2")); lst.add(new Data("A", "3")); for(int i = 0; i < lst.size(); i++) { System.out.println((Data)lst.get(i)); } Collections.sort(lst, new Cmp()); for(int i = 0; i < lst.size(); i++) { System.out.println((Data)lst.get(i)); } } }
class Data { private String v1; private String v2; public Data(String v1, String v2) { this.v1 = v1; this.v2 = v2; } public String toString() { return (v1 + " " + v2); } public String getV1() { return v1; } public String getV2() { return v2; }
}
class Cmp implements Comparator { public int compare(Object o1, Object o2) { return ((Data)o1).getV1().compareTo(((Data)o2).getV1()); } public boolean equals(Object obj) { return false; } }
Tak til arne_v...!
Men hvordan sorterer man efter to atributter af typen double? Det er et punkt i et plan der skal sorteres efter x,y
Du kan evt lave en 'equalsDouble' metode til doubles der returnerer true hvis de 2 tal er under en vis afstand fra hinanden:
public boolean equalsDouble( double dbl1, double dbl2, int antalcifre ) { double usikkerhed = dbl1 / ( Math.pow(10, antalcifre ) ); If ( dbl1 +usikkerhed > dbl2 && dbl1 -usikkerhed < dbl2 ) { return true; // de to tal er 'ens nok' } else { return false; // de to tal er for langt fra hinanden } }// endmethod
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.