Wie man ein bestimmtes Element in der Array-Liste zum ersten Element verschiebt

Zum Beispiel: Eine Liste

ABCDE

Angesichts C, Wechseln zu

CABDE

Beachten Sie, dass sich die Arraygröße ändern wird, einige Elemente können in Laufzeiten entfernt werden

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

Diese Anweisung funktioniert nicht, weil sie CBADE nicht CABDE ausgibt, wie man es beheben kann?

Vielen Dank.

5 Solutions collect form web for “Wie man ein bestimmtes Element in der Array-Liste zum ersten Element verschiebt”

Was Sie wollen, ist eine sehr teure Bedienung in einer ArrayList . Es erfordert das Verschieben jedes Elements zwischen dem Anfang der Liste und dem Ort von C unten.

Allerdings, wenn Sie es wirklich tun wollen:

 int index = url.indexOf(itemToMove); url.remove(index); url.add(0, itemToMove); 

Wenn dies eine häufige Operation für Sie ist, und zufälliger Zugriff ist eher weniger häufig, könnten Sie erwägen Umstellung auf eine andere List Umsetzung wie LinkedList . Sie sollten auch überlegen, ob eine Liste die richtige Datenstruktur überhaupt ist, wenn Sie so besorgt über die Reihenfolge der Elemente sind.

Verwenden Sie diese: Entfernen: ArraylistObj.remove(object); Hinzufügen an einer bestimmten Position: ArrayListObj.add(position, Object);

Wie pro Code verwenden Sie dies:

 url.remove("C"); url.add(0,"C"); 

Das Problem ist, du tauscht C mit A aus, also wird ABCDE zu CBAD E.

Du könntest so etwas ausprobieren:

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

Oder wenn url eine LinkedList :

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

Dieser Code erlaubt Ihnen, die Größe der Liste zu erhöhen und Elemente einzufügen, ohne dass eine störende Reihenfolge der Liste vorliegt

 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); } 

Lassen Sie sagen, Sie haben ein Array:

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

Jetzt willst du das C bei Index 0 , das C in einer anderen Variable

 String characterC = arrayOne[2]; 

Führen Sie nun die Schleife wie folgt aus:

 for (int i = (2 - 1); i >= 0; i--) { arrayOne[i+1] = arrayOne[i]; } 

Oberhalb von 2 ist der Index von C Legen Sie nun C bei Index ein, z. B. auf 0

 arrayOne[0] = characterC; 

Ergebnis der obigen Schleife wird so sein:

 arrayOne: {"C","A","B","D","E"} 

Das Ende, erreichen wir unser Ziel.

Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.