Tengo matriz de cadenas (String[]
) y necesito eliminar el primer elemento. ¿Cómo puedo hacer eso de manera eficiente?¿Cuál es la mejor manera de eliminar el primer elemento de una matriz?
Respuesta
El tamaño de las matrices en Java no se puede cambiar. Entonces, técnicamente no puedes eliminar ningún elemento de la matriz.
Una forma de simular la eliminación de un elemento de la matriz es crear una nueva matriz más pequeña y luego copiar todos los elementos de la matriz original en la nueva matriz más pequeña.
String[] yourArray = Arrays.copyOfRange(oldArr, 1, oldArr.length);
Sin embargo, yo no recomendaría el método anterior. Realmente deberías estar usando un List<String>
. Las listas le permiten agregar y eliminar elementos de cualquier índice. Eso sería similar a lo siguiente:
List<String> list = new ArrayList<String>(); // or LinkedList<String>();
list.add("Stuff");
// add lots of stuff
list.remove(0); // removes the first item
Es importante tener en cuenta que eliminar el primer elemento de una 'ArrayList' es O (n). –
@Matt, para una matriz y la lista. Pero, el código es mucho más fácil para la lista. – jjnguy
Para una matriz y una 'ArrayList', pero no para' LinkedList'. –
La forma más simple es, probablemente, la siguiente: básicamente, necesita construir una nueva matriz que sea un elemento más pequeño, luego copie los elementos que desea mantener en las posiciones correctas.
int n=oldArray.length-1;
String[] newArray=new String[n];
System.arraycopy(oldArray,1,newArray,0,n);
Tenga en cuenta que si usted se encuentra haciendo este tipo de operación con frecuencia, podría ser una señal de que en realidad se debe utilizar un tipo diferente de estructura de datos, por ejemplo, una lista vinculada Construir una nueva matriz cada vez es una operación O (n), que podría ser costosa si la matriz es grande. Una lista enlazada te da O (1) eliminación del primer elemento.
Una idea alternativa no es eliminar el primer elemento en absoluto, sino simplemente incrementar un entero que apunte al primer índice que está en uso. Los usuarios de la matriz deberán tener en cuenta esta compensación, pero este puede ser un enfoque eficiente. La clase Java String realmente usa este método internamente cuando crea subcadenas.
No puede hacerlo, mucho menos rápidamente. Las matrices en Java son de tamaño fijo. Dos cosas que podría hacer son:
- Cambie cada elemento hasta uno, luego configure el último elemento como nulo.
- Crea una nueva matriz, luego cópiala.
Puede usar System.arraycopy
para cualquiera de estos. Ambos son O (n), ya que copian todos menos 1 elemento.
Si va a eliminar el primer elemento a menudo, considere usar LinkedList
en su lugar. Puede usar LinkedList.remove
, que es de la interfaz Queue
, para mayor comodidad. Con LinkedList
, eliminar el primer elemento es O (1). De hecho, eliminar cualquier elemento es O (1) una vez que tiene un ListIterator
en esa posición. Sin embargo, acceder a un elemento arbitrario por índice es O (n).
Mantenga un índice del primer elemento "activo" de la matriz. Al eliminar (pretender eliminar) el primer elemento, se convierte en una operación de complejidad de tiempo O(1)
.
Un método alternativo fea: [? ¿Cómo se quita objetos de una matriz en java]
String[] a ={"BLAH00001","DIK-11","DIK-2","MAN5"};
String[] k=Arrays.toString(a).split(", ",2)[1].split("]")[0].split(", ");
Por favor, alguien con suficiente reputación rechazó esta respuesta, es exactamente lo que dice, ¡fea! No hay intención de ser grosero, pero en aras de la codecibilidad, ¡por favor no publique este tipo de cosas! – Penn
si ya está usando matrices, sería mejor usar Arrays.copyOfRange –
- 1. eliminar el primer elemento de la matriz
- 2. Ruby: ¿Cuál es la forma más fácil de eliminar el primer elemento de una matriz?
- 3. PHP: Eliminar el primer y último elemento de la matriz
- 4. ¿cuál es la mejor manera de verificar una matriz vacía?
- 5. ¿Cuál es la mejor manera de eliminar elementos de matriz en PHP?
- 6. Saltando el primer elemento de una matriz
- 7. ¿Cuál es la mejor manera de eliminar duplicados en una matriz en Java?
- 8. Eliminar solo el primer elemento de una selección de jquery
- 9. WPF: la mejor manera de eliminar un elemento de ItemsSource
- 10. elemento eliminar de la matriz
- 11. La mejor manera de ordenar una matriz
- 12. ¿Cuál es la mejor manera de serializar una matriz basada en una interfaz en WCF?
- 13. ¿Cuál es la mejor manera de obtener el primer y el último día del mes pasado?
- 14. La mejor manera de eliminar elemento de la matriz sin reorganizarlo
- 15. Django, ¿Cuál es la mejor y más rápida manera de obtener solo el primer y último elemento de algo, Customer.objects.xxxx
- 16. ¿Cuál es la mejor manera de dibujar en la consola?
- 17. ¿cuál es la mejor manera de editar el archivo csv
- 18. ¿Cuál es la mejor manera de eliminar una fila de la tabla con jQuery?
- 19. La mejor manera de crear una matriz singleton
- 20. primer elemento de matriz - jQuery
- 21. ¿La mejor manera de eliminar todos los elementos de una matriz de ActionScript?
- 22. La mejor manera de eliminar elementos de una colección
- 23. ¿Cuál es la mejor manera de eliminar toda una tabla grande en t-sql?
- 24. ¿Cuál es la mejor manera de crear una matriz secundaria a partir de una matriz existente en C++?
- 25. Obtener el primer elemento de una matriz de JavaScript dispersa
- 26. ¿Cuál es la mejor manera de analizar una gramática simple?
- 27. ¿Cuál es la forma más fácil de eliminar el primer carácter de una cadena?
- 28. Cuál es la mejor manera de eliminar objetos de una lista
- 29. ¿Cuál es la mejor manera de eliminar acentos en una cadena unicode de Python?
- 30. ¿Cómo eliminar el primer y último elemento de una lista?
posible duplicado de (http://stackoverflow.com/questions/112503/how-do-i- remove-objects-from-an-array-in-java) – McDowell
No es una tontería.La pregunta anterior trata de eliminar elementos por valor; esto se trata de eliminar un elemento por índice. –