381 Stimmen

Was ist der einfachste Weg, um eine ArrayList umzukehren?

Was ist der einfachste Weg, diese ArrayList umzukehren?

ArrayList<Integer> aList = new ArrayList<>();

//Add elements to ArrayList object
aList.add("1");
aList.add("2");
aList.add("3");
aList.add("4");
aList.add("5");

while (aList.listIterator().hasPrevious())
  Log.d("reverse", "" + aList.listIterator().previous());

4voto

DevPolarBear Punkte 4036

Der einfache Weg ist, dass Sie " Sammlungen " in Java. Sie müssen es nur aufrufen und " reverse() " Methode davon.

Beispiel für die Verwendung:

ArrayList<Integer> yourArrayList = new ArrayList<>();
    yourArrayList.add(1);
    yourArrayList.add(2);
    yourArrayList.add(3);
    //yourArrayList is: 1,2,3

Collections.reverse(yourArrayList); 
    // Now, yourArrayList is: 3,2,1

3voto

vijayraj34 Punkte 1408

Das Gleiche können wir auch mit Java 8 machen.

public static<T> List<T> reverseList(List<T> list) {
        List<T> reverse = new ArrayList<>(list.size());

        list.stream()
                .collect(Collectors.toCollection(LinkedList::new))
                .descendingIterator()
                .forEachRemaining(reverse::add);

        return reverse;
    }

2voto

Umkehrung einer ArrayList in rekursiver Weise und ohne Erstellung einer neuen Liste zum Hinzufügen von Elementen :

   public class ListUtil {

    public static void main(String[] args) {
        ArrayList<String> arrayList = new ArrayList<String>();
        arrayList.add("1");
        arrayList.add("2");
        arrayList.add("3");
        arrayList.add("4");
        arrayList.add("5");
        System.out.println("Reverse Order: " + reverse(arrayList));

    }

    public static <T> List<T> reverse(List<T> arrayList) {
        return reverse(arrayList,0,arrayList.size()-1);
    }
    public static <T> List<T> reverse(List<T> arrayList,int startIndex,int lastIndex) {

        if(startIndex<lastIndex) {
            T t=arrayList.get(lastIndex);
            arrayList.set(lastIndex,arrayList.get(startIndex));
            arrayList.set(startIndex,t);
            startIndex++;
            lastIndex--;
            reverse(arrayList,startIndex,lastIndex);
        }
        return arrayList;
    }

}

1voto

akhil_mittal Punkte 20953

Nur für den Fall, dass wir die Java 8 dann können wir Stream verwenden. Die ArrayList ist eine Liste mit wahlfreiem Zugriff, und wir können einen Strom von Elementen in umgekehrter Reihenfolge abrufen und ihn dann in einer neuen ArrayList .

public static void main(String[] args) {
        ArrayList<String> someDummyList = getDummyList();
        System.out.println(someDummyList);
        int size = someDummyList.size() - 1;
        ArrayList<String> someDummyListRev = IntStream.rangeClosed(0,size).mapToObj(i->someDummyList.get(size-i)).collect(Collectors.toCollection(ArrayList::new));
        System.out.println(someDummyListRev);
    }

    private static ArrayList<String> getDummyList() {
        ArrayList dummyList = new ArrayList();
        //Add elements to ArrayList object
        dummyList.add("A");
        dummyList.add("B");
        dummyList.add("C");
        dummyList.add("D");
        return dummyList;
    }

Der obige Ansatz eignet sich nicht für LinkedList, da es sich dabei nicht um einen Zufallszugriff handelt. Wir können auch Gebrauch machen von instanceof ebenfalls zu überprüfen.

1voto

Kishan Solanki Punkte 11520

Kotlin-Benutzer

val reverse: List<Int> = list.reversed();

Viel Spaß beim Coding!

Referenz

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