62 votes

Android - inverser l'ordre d'un tableau

J'ai un tableau d'objets.

Est-il possible de créer un nouveau tableau qui soit une copie de ce tableau, mais dans l'ordre inverse ? Je cherchais quelque chose comme ça.

// my array
ArrayList<Element> mElements = new ArrayList<Element>();
// new array
ArrayList<Element> tempElements = mElements;

tempElements.reverse(); // something to reverse the order of the array

231voto

Ted Hopp Points 122617

Vous pouvez le faire en deux étapes :

ArrayList<Element> tempElements = new ArrayList<Element>(mElements);
Collections.reverse(tempElements);

0 votes

Merci Ted. On dirait que j'ai un peu de lecture à faire sur java.util.*.

2voto

KishanSolanki124 Points 966

Kotlin

val reverseList: List<Int> = yourActualList.reversed();

Référence

0voto

Sam Points 2090

Approche simple sans rien mettre en œuvre.

                ArrayList<YourObject> oldlist = new ArrayList<YourObject>();
                ArrayList<YourObject> newList = new ArrayList<YourObject>();
                int size = oldlist.size()-1;

                for(int i=size;i>=0;i--){
                    newList.add(oldlist.get(i));
                }

0 votes

Une amélioration consisterait à créer newList d'une capacité initiale au moins égale à la taille des oldList . Cela éviterait les réallocations de mémoire interne au fur et à mesure que des éléments sont ajoutés dans la boucle.

0voto

DarkCygnus Points 3048

Pour Android sur Kotlin, cela peut être fait avec le programme Anko's forEachReversedByIndex{} opération lambda, comme ceci :

val tempElements = ArrayList<Element>(mElements.size)
mElements.forEachReversedByIndex{tempElements.add(it)}

1 votes

Une amélioration consisterait à créer tempElements d'une capacité initiale au moins égale à la taille des mElements . Cela éviterait les réallocations de mémoire interne au fur et à mesure que des éléments sont ajoutés dans la deuxième ligne.

0 votes

@TedHopp merci pour la suggestion, je vais voir pour l'incorporer à la réponse :)

0voto

hitesh Points 152

J'ai inversé le profil de l'ordre croissant à l'ordre décroissant par

En kotlin

 // A comparator to compare points of Profile 
class ProfileComparator {
    companion object : Comparator<Profile?> {
        override fun compare(o1: Profile?, o2: Profile?): Int {
            if (o1 == null || o2 == null) {
                return 0;
            }
            return o2.points.compareTo(o1.points)
        }
    }
}

et ensuite

var profilesList = profiles.sortedWith(ProfileComparator)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X