Comment déplacer un élément spécifique dans la liste de tableaux vers le premier élément

Par exemple: une liste

ABCDE

Étant donné C, passer à

CABDE

Notez que la taille du tableau changera, certains éléments peuvent être supprimés au moment de l’exécution

Collections.swap(url, url.indexOf(itemToMove), 0); 

Cette déclaration ne fonctionne pas car il sort CBADE pas CABDE, comment le réparer?

Merci.

Ce que vous voulez, c’est une opération très coûteuse dans une ArrayList . Cela nécessite de déplacer chaque élément entre le début de la liste et l’emplacement de C vers le bas 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’access aléatoire est plutôt moins fréquent, vous pouvez envisager de passer à une autre implémentation de List telle que LinkedList . Vous devriez également considérer si une liste est la structure de données appropriée si vous êtes tellement préoccupé par l’ordre des éléments.

Utilisez ceci: Remove: ArraylistObj.remove(object); Ajout à une position spécifique: 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, ABCDE devient alors CBAD E.

Vous pourriez essayer quelque chose comme ça:

 url.remove(itemToMove); url.add(0, itemToMove); 

Ou si l’ url est une LinkedList :

 url.remove(itemToMove); url.addFirst(itemToMove); 

Une autre solution, continuez simplement à passer de 0 à indexOf(itemToMove) .

Ceci est ma version de Kotlin:

 val list = mutableListOf('A', 'B', 'C', 'D', 'E') (0..list.indexOf('C')).forEach { Collections.swap(list, 0, it) } 

Désolé je ne suis pas familier avec Java mais a 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 perturber autrement 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:

 Ssortingng[] arrayOne = new Ssortingng[]{"A","B","C","D","E"}; 

Maintenant, vous voulez placer le C à l’index 0 obtenir le C dans une autre variable

 Ssortingng 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 est l’indice de C Insérez maintenant 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 objective.