2009-03-18 5 views
11

Quelle est la meilleure façon de réorganiser des éléments dans une liste? J'ai besoin de la possibilité de déplacer des éléments pour déplacer des éléments de la liste, un pas en arrière ou en avant dans l'index. Je pensais obtenir l'index de l'item, en l'ajoutant à l'index -1/+2 et en supprimant l'ancienne référence.Meilleure façon de réorganiser une ArrayList en Java

Y at-il un moyen plus rapide de gérer le réarrangement sans créer de doublons dans la liste dans le processus.

+0

Veuillez fournir un exemple. Par exemple, avoir la liste ABCDEF, que voulez-vous? Quelque chose comme ABCEDF (déplacement d'un élément) ou ABCEF (suppression d'un élément)? Pourquoi écrivez -1/+2 au lieu de -1/+1? – schnaader

+0

J'avais +2 comme si vous ajoutez 'C' dans votre exemple à indexof (c) +1, ABCCDEF supprimant l'ancien C le ramènera à ABCDEF. mettre +2 vous donnera ABCDCEF et enlever l'ancienne valeur donnera ABDCEF. Donc +2 au lieu de +1. Mais Collections.swap était exactement ce que je cherchais. –

Répondre

37

Utilisez la méthode d'échange

Collections classe du JDK du JDK contient une méthode juste à cet effet appelé Collections.swap. Selon la documentation de l'API, cette méthode vous permet de "permuter les éléments aux positions spécifiées dans la liste spécifiée".

Je suggère cette solution pour que vous n'ayez pas à supprimer des éléments de la liste et que vous n'ayez pas à lancer votre propre méthode d'échange. En outre, il semble que cette méthode existe depuis la version 1.4 de Java, elle devrait donc fonctionner pour la plupart des JDK modernes.

+0

Doh. Je n'ai même pas vu ça. Supprimer ma réponse ... –

+0

Je m'en suis souvenu seulement parce que je le regardais aujourd'hui pour mon projet. C'est dans l'un des coins sombres du JDK. – Elijah

+0

Très cool, je ne pense pas avoir jamais utilisé cette méthode non plus, mais ça pourrait vraiment être utile. –

Questions connexes