Par exemple: une liste
A B C D E
Étant donné C, Basculer vers
C A B D E
Notez que la taille du tableau changera, certains éléments peuvent être supprimés dans les temps d'exécution
Collections.swap(url, url.indexOf(itemToMove), 0);
Cette instruction ne fonctionne pas car elle affiche C B A D E et non C A B D E, comment y remédier?
Merci.
Ce que vous voulez, c'est une opération très coûteuse dans une ArrayList
. Cela nécessite de décaler chaque élément entre le début de la liste et l'emplacement de C
d'une unité.
Cependant, si vous voulez vraiment le faire:
int index = url.indexOf(itemToMove);
url.remove(index);
url.add(0, itemToMove);
S'il s'agit d'une opération fréquente pour vous et que l'accès aléatoire est plutôt moins fréquent, vous pouvez envisager de passer à une autre implémentation List
telle que LinkedList
. Vous devez également vous demander si une liste est la bonne structure de données si l'ordre des éléments vous préoccupe tellement.
Faire ceci:
ArraylistObj.remove(object);
ArrayListObj.add(position, Object);
Selon votre code, utilisez ceci:
url.remove("C");
url.add(0,"C");
Le problème est que vous échangez C avec A, donc A B C D E devient C B A D E.
Vous pouvez essayer quelque chose comme ça:
url.remove(itemToMove);
url.add(0, itemToMove);
Ou si url
est une LinkedList
:
url.remove(itemToMove);
url.addFirst(itemToMove);
Une autre solution consiste simplement à permuter de 0
à indexOf(itemToMove)
.
Ceci est ma version Kotlin:
val list = mutableListOf('A', 'B', 'C', 'D', 'E')
(0..list.indexOf('C')).forEach {
Collections.swap(list, 0, it)
}
Désolé, je ne connais pas Java, mais j'ai appris un peu Kotlin. Mais l'algorithme est le même.
Ce code vous permettra d'augmenter la taille de la liste et d'insérer des éléments sans déranger l'ordre de la liste.
private void insert(double price){
for(int i = 0; i < keys.size(); i++){
if(price > keys.get(i)){
keys.add(null);
for(int j = keys.size()-1; j > i; j--){
Collections.swap(keys, j, j-1);
}
keys.add(price);
Collections.swap(keys, keys.size()-1, i);
keys.remove(keys.size()-1);
return;
}
}
keys.add(price);
}
Disons que vous avez un tableau:
String[] arrayOne = new String[]{"A","B","C","D","E"};
Maintenant, vous voulez placer la C
à index 0
obtenir le C
dans une autre variable
String characterC = arrayOne[2];
Maintenant, lancez la boucle comme suit:
for (int i = (2 - 1); i >= 0; i--) {
arrayOne[i+1] = arrayOne[i];
}
Au-dessus de 2
correspond l'index de C
. Maintenant, insérez C
à l'index par exemple sur 0
arrayOne[0] = characterC;
Le résultat de la boucle ci-dessus sera comme ça:
arrayOne: {"C","A","B","D","E"}
La fin, nous atteignons notre objectif.