java - remove - Cómo mover un elemento específico en la lista de arreglo al primer elemento
metodos arraylist java (6)
Por ejemplo: una lista
A B C D E
Dado C, cambie a
CABDE
Tenga en cuenta que el tamaño de la matriz cambiará, algunos elementos pueden eliminarse en tiempos de ejecución
Collections.swap(url, url.indexOf(itemToMove), 0);
Esta afirmación no funciona porque arroja CBADE, no CABDE, ¿cómo solucionarlo?
Gracias.
Digamos que tienes una matriz:
String[] arrayOne = new String[]{"A","B","C","D","E"};
Ahora quiere colocar la C
en el índice 0
obtener la C
en otra variable
String characterC = arrayOne[2];
Ahora ejecuta el ciclo de la siguiente manera:
for (int i = (2 - 1); i >= 0; i--) {
arrayOne[i+1] = arrayOne[i];
}
Por encima de 2
es el índice de C
Ahora inserte C
en el índice, por ejemplo, en 0
arrayOne[0] = characterC;
El resultado del ciclo anterior será así:
arrayOne: {"C","A","B","D","E"}
Al final, logramos nuestro objetivo.
El problema es que cambias C por A, entonces ABCDE se convierte en CBAD E.
Podrías probar algo como esto:
url.remove(itemToMove);
url.add(0, itemToMove);
O si url
es una LinkedList
:
url.remove(itemToMove);
url.addFirst(itemToMove);
Este código le permitirá aumentar el tamaño de la lista e insertar elementos sin alterar el orden de la lista.
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);
}
Lo que quiere es una operación muy costosa en una ArrayList
. Requiere cambiar cada elemento entre el comienzo de la lista y la ubicación de C
por uno.
Sin embargo, si realmente quieres hacerlo:
int index = url.indexOf(itemToMove);
url.remove(index);
url.add(0, itemToMove);
Si esta es una operación frecuente para usted, y el acceso aleatorio es bastante menos frecuente, puede considerar cambiar a otra implementación de List
como LinkedList
. También debe considerar si una lista es la estructura de datos correcta si está tan preocupado por el orden de los elementos.
Otra solución, simplemente cambie de 0
a indexOf(itemToMove)
.
Esta es mi versión de Kotlin:
val list = mutableListOf(''A'', ''B'', ''C'', ''D'', ''E'')
(0..list.indexOf(''C'')).forEach {
Collections.swap(list, 0, it)
}
Lo siento, no estoy familiarizado con Java pero aprendí un poco de Kotlin. Pero el algoritmo es el mismo
Use esto: Eliminar: ArraylistObj.remove(object);
Agregar en una posición específica: ArrayListObj.add(position, Object);
Según su código, use esto:
url.remove("C");
url.add(0,"C");