Zum Beispiel: Eine Liste
ABCDE
Gegeben C , Wechseln zu
CABDE
Beachten Sie, dass sich die Array-Größe ändert, einige Elemente können während der Laufzeit entfernt werden
Collections.swap(url, url.indexOf(itemToMove), 0);
Diese Anweisung funktioniert nicht, weil sie CBADE nicht CABDE ausgibt, wie kann man das beheben?
Vielen Dank.
Chris Hayes
Was Sie wollen, ist eine sehr teure Operation in einem ArrayList
. Es erfordert das Verschieben jedes Elements zwischen dem Anfang der Liste und der Position von C
um eins runter.
Wenn du es aber wirklich machen willst:
int index = url.indexOf(itemToMove);
url.remove(index);
url.add(0, itemToMove);
Wenn dies eine häufige Operation für Sie ist und der wahlfreie Zugriff eher seltener ist, sollten Sie einen Wechsel zu einem anderen in Betracht ziehen List
Umsetzung wie z LinkedList
. Sie sollten auch überlegen, ob eine Liste überhaupt die richtige Datenstruktur ist, wenn Ihnen die Reihenfolge der Elemente so wichtig ist.
Venkata Krishna
Mach das:
Entfernen das Element aus der Liste: ArraylistObj.remove(object);
Hinzufügen das Element der Rücken zur Liste an bestimmter Stelle : ArrayListObj.add(position, Object);
Verwenden Sie gemäß Ihrem Code Folgendes:
url.remove("C");
url.add(0,"C");
Eine andere Lösung, tauschen Sie einfach weiter aus 0
zu indexOf(itemToMove)
.
Dies ist meine Kotlin-Version:
val list = mutableListOf('A', 'B', 'C', 'D', 'E')
(0..list.indexOf('C')).forEach {
Collections.swap(list, 0, it)
}
Entschuldigung, ich bin mit Java nicht vertraut, habe aber ein wenig Kotlin gelernt. Aber der Algorithmus ist derselbe.
hbsrud
Das Problem ist, dass Sie C durch A tauschen, also wird ABCDE zu CBAD E.
Du könntest so etwas versuchen:
url.remove(itemToMove);
url.add(0, itemToMove);
Oder wenn url
ist ein LinkedList
:
url.remove(itemToMove);
url.addFirst(itemToMove);
Mit diesem Code können Sie die Größe der Liste erhöhen und Elemente einfügen, ohne die Reihenfolge der Liste anderweitig zu stören
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);
}
Zulqarnain Mustafa
Angenommen, Sie haben ein Array:
String[] arrayOne = new String[]{"A","B","C","D","E"};
Jetzt wollen Sie die platzieren C
am Index 0
bekommen das C
in einer anderen Variablen
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];
}
Über 2
ist Index von C
. Jetzt einfügen C
bei Index zum Beispiel auf 0
arrayOne[0] = characterC;
Das Ergebnis der obigen Schleife sieht so aus:
arrayOne: {"C","A","B","D","E"}
Am Ende erreichen wir unser Ziel.
Kunal Kalwar
Kotlin ->
fun <T> MutableList<T>.move(item: T, newIndex: Int) {
val currentIndex = indexOf(item)
if (currentIndex < 0) return
removeAt(currentIndex)
add(newIndex, item)
}
121694 0 0 cookie-check So verschieben Sie ein bestimmtes Element in der Array-Liste zum ersten Element yes