Comment aller de l'élément dans la liste du réseau sur le premier élément
Par exemple : Une liste
A B C D E
Donné C , Interrupteur à
C A B D E
Notez que la taille de la matrice va changer, certains éléments peuvent supprimé dans le temps d'exécution de la
Collections.swap(url, url.indexOf(itemToMove), 0);
Cette instruction ne fonctionne pas parce que la sortie de C B A D E C A B D E , comment faire pour le réparer?
Grâce.
- Qu'est-ce que l'url ici ?
Vous devez vous connecter pour publier un commentaire.
Ce que vous voulez est une opération très coûteuse dans un
ArrayList
. Il nécessite de décalage de chaque élément entre le début de la liste et l'emplacement deC
vers le bas par un.Toutefois, si vous voulez vraiment le faire:
Si c'est fréquemment le fonctionnement pour vous, et un accès aléatoire est plutôt de moins en moins fréquentes, vous pourriez envisager de passer à un autre
List
la mise en œuvre commeLinkedList
. Vous devriez également considérer si une liste est la bonne structure de données à tous, si vous êtes si préoccupé par l'ordre des éléments.Ce faire:
ArraylistObj.remove(object);
ArrayListObj.add(position, Object);
Que par votre code à utiliser :
Le problème est, vous le swap C avec A, alors A B C D E devient C B A D E.
Vous pouvez essayer quelque chose comme ceci:
Ou si
url
est unLinkedList
:Une autre solution, il suffit de garder swaping de
0
àindexOf(itemToMove)
.C'est mon Kotlin version:
Désolé, je suis pas familier avec Java, mais appris un peu de Kotlin. Mais l'algorithme est le même.
Ce code va vous permettre d'augmenter la taille de la liste, et l'insertion d'éléments sans perturber l'ordre de la liste
Disons que vous avez un tableau:
Maintenant, vous voulez placer le
C
à l'index0
obtenir leC
dans une autre variableMaintenant exécuter la boucle comme suit:
Ci-dessus
2
est l'indice deC
. Insérez maintenantC
à l'index par exemple sur0
Résultat au dessus de la boucle sera comme ça:
La fin, nous à atteindre notre objectif.