Android sortiert die Arrayliste nach Eigenschaften

Lesezeit: 2 Minuten

Benutzer-Avatar
Simon

Ich möchte ein sortieren ArrayList durch eine Eigenschaft. Das ist mein Code…

public class FishDB{

    public static Object Fish;
    public ArrayList<Fish> list = new ArrayList<Fish>();

    public class Fish{
        String name;
        int length;
        String LatinName;
        //etc. 

        public Vis (String name) {
            this.name = name;
        }
    }

    public FishDB() {
        Fish fish;

        fish = new Fish("Shark");
        fish.length = 200;
        fish.LatinName = "Carcharodon Carcharias";

        fish = new Fish("Rainbow Trout");
        fish.length = 80;
        fish.LatinName = "Oncorhynchus Mykiss";

        //etc.
        }
    }
}

Jetzt möchte ich das sortieren ArrayList durch eine Eigenschaft zB die latinname bei einer anderen Tätigkeit. Aber ich weiß nicht, wie man das macht. Weiß jemand wie?

  • Versuchen Collections.sort(arrayList);

    – Luzifer

    2. Juni 2012 um 7:42 Uhr

  • @Lucifer Wenn Sie das tun, sollte der generische Typ Ihrer arrayList java.lang.Comparable implementieren

    – IgorGanapolsky

    1. Juni 2013 um 15:01 Uhr

Benutzer-Avatar
K-ballo

Sie müssen a implementieren Comparatorzum Beispiel:

public class FishNameComparator implements Comparator<Fish>
{
    public int compare(Fish left, Fish right) {
        return left.name.compareTo(right.name);
    }
}

und dann so sortieren:

Collections.sort(fishes, new FishNameComparator());

  • Danke, aber ein Problem habe ich noch. Ich möchte die Arrayliste in einer Aktivität sortieren. Am Anfang steht: öffentliche Klasse fishList erweitert ListActivity{ Und wenn ich schreibe, implementiert public class FishNameComparator Comparator{ Es gibt zwei Fehler, nämlich: illegal modifier for the local class FishNameComparator; nur Abstract oder Final ist erlaubt. Und: Der Typ FishNameComparator muss die geerbte abstrakte Methode Comparator.compare(String, String) implementieren. Ich habe gerade getan, was in Ihrer Antwort steht.

    – Simon

    1. Juni 2012 um 15:46 Uhr


  • @ user1380611: Wenn Sie dies als verschachtelte Klasse implementieren, muss es a sein static class. Und ich habe mein Beispiel vermasselt, so sollte es sein implements Comparator<Fish>.

    – K-ballo

    1. Juni 2012 um 15:55 Uhr

  • Funktioniert perfekt für mich. Hier wird aufsteigend sortiert.

    – IgorGanapolsky

    1. Juni 2013 um 14:59 Uhr

Benutzer-Avatar
Swapnil Saha

Sie können es einfach mit diesem Code tun:

Collections.sort(list, new Comparator<Fish>() {
    public int compare(Fish o1, Fish o2) {
        return o1.name.compareTo(o2.name);
    }
});

  • Dieser viel besser!

    – imike

    4. November 2016 um 20:54 Uhr

Kotlin-Code

list.sortWith(Comparator { o1, o2 -> o1.name!!.compareTo(o2.name!!) })

Benutzer-Avatar
Nebras wahaib

Es gibt mehrere Möglichkeiten, dasselbe Ziel zu erreichen. Die einfachsten Lösungen wären die Verwendung von Java 8-Funktionen:

Collections.sort(Fish, (t1, t2) -> t1.name().compareTo(t2.name()));

1140710cookie-checkAndroid sortiert die Arrayliste nach Eigenschaften

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy