455 Stimmen

Wie sortiere ich eine Liste/ArrayList?

Ich habe eine Liste von doubles in Java und möchte das ArrayList in absteigender Reihenfolge sortieren.

Die Eingabe-ArrayList sieht wie folgt aus:

List testList = new ArrayList();

testList.add(0.5);
testList.add(0.2);
testList.add(0.9);
testList.add(0.1);
testList.add(0.1);
testList.add(0.1);
testList.add(0.54);
testList.add(0.71);
testList.add(0.71);
testList.add(0.71);
testList.add(0.92);
testList.add(0.12);
testList.add(0.65);
testList.add(0.34);
testList.add(0.62);

Das Ergebnis sollte so aussehen:

0.92
0.9
0.71
0.71
0.71
0.65
0.62
0.54
0.5
0.34
0.2
0.12
0.1
0.1
0.1

3voto

Ibrahima Timera Punkte 598

Zum Beispiel habe ich eine Klasse Person: String Name, int Alter ==> Konstruktor new Person(Name, Alter)

import java.util.Collections;
import java.util.ArrayList;
import java.util.Arrays;

public void main(String[] args){
    Person ibrahima=new Person("Timera",40);
    Person toto=new Person("Toto",35);
    Person alex=new Person("Alex",50);
    ArrayList myList=new ArrayList
    Collections.sort(myList, new Comparator() {
        @Override
        public int compare(Person p1, Person p2) {
            // return p1.age+"".compareTo(p2.age+""); //sort by age
            return p1.name.compareTo(p2.name); // if you want to short by name
        }
    });
    System.out.println(myList.toString());
    //[Person [name=Alex, age=50], Person [name=Timera, age=40], Person [name=Toto, age=35]]
    Collections.reverse(myList);
    System.out.println(myList.toString());
    //[Person [name=Toto, age=35], Person [name=Timera, age=40], Person [name=Alex, age=50]]

}

3voto

Afsar Ali Punkte 465

Wenn Sie ein Objekt in der ArrayList nach seiner ID sortieren müssen, verwenden Sie dann den Java8-Stream.

 List personList = new ArrayList<>();

    List personListSorted =
                personList.stream()
                  .sorted(Comparator.comparing(Person::getPersonId))
                  .collect(Collectors.toList());

1voto

Donald Raab Punkte 6053

Mit Eclipse Collections können Sie eine primitive Double-Liste erstellen, sortieren und dann umkehren, um sie in absteigender Reihenfolge zu platzieren. Mit diesem Ansatz werden die Doubles vermieden, die eine Verpackung erfordern.

MutableDoubleList doubleList =
    DoubleLists.mutable.with(
        0.5, 0.2, 0.9, 0.1, 0.1, 0.1, 0.54, 0.71,
        0.71, 0.71, 0.92, 0.12, 0.65, 0.34, 0.62)
        .sortThis().reverseThis();
doubleList.each(System.out::println);

Wenn Sie eine List möchten, würde Folgendes funktionieren.

List objectList =
    Lists.mutable.with(
        0.5, 0.2, 0.9, 0.1, 0.1, 0.1, 0.54, 0.71,
        0.71, 0.71, 0.92, 0.12, 0.65, 0.34, 0.62)
        .sortThis(Collections.reverseOrder());
objectList.forEach(System.out::println);

Wenn Sie den Typ als ArrayList beibehalten möchten, können Sie die Liste wie folgt initialisieren und sortieren, indem Sie die Hilfsklasse ArrayListIterate verwenden:

ArrayList arrayList =
    ArrayListIterate.sortThis(
            new ArrayList<>(objectList), Collections.reverseOrder());
arrayList.forEach(System.out::println);

Hinweis: Ich bin ein Committer für Eclipse Collections.

0voto

Ivan Kovtun Punkte 521

Die folgende Zeile sollte das Dick tun

testList.sort(Collections.reverseOrder());

0voto

Caner Yılmaz Punkte 193
  yearList = arrayListOf()
    for (year in 1950 until 2021) {
        yearList.add(year)
    }

   yearList.reverse()
    val list: ArrayList = arrayListOf()

    for (year in yearList) {
        list.add(year.toString())
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X