Eliminación del primer elemento de una matriz

1. Información general

En este tutorial, veremos cómo eliminar el primer elemento de una matriz .

Además, también veremos cómo el uso de estructuras de datos del marco de colecciones de Java facilita aún más las cosas.

2. Usando Arrays.copyOfRange ()

En primer lugar, eliminar un elemento de una matriz no es técnicamente posible en Java . Para citar los documentos oficiales:

“Una matriz es un objeto contenedor que contiene un número fijo de valores de un solo tipo. La longitud de una matriz se establece cuando se crea la matriz. Después de la creación, su duración es fija ".

Esto significa que mientras trabajemos con una matriz directamente, todo lo que podemos hacer es crear una nueva matriz de menor tamaño, que luego no contiene el primer elemento .

Afortunadamente, el JDK proporciona una conveniente función auxiliar estática que podemos usar, llamada Arrays.copyOfRange () :

String[] stringArray = {"foo", "bar", "baz"}; String[] modifiedArray = Arrays.copyOfRange(stringArray, 1, stringArray.length);

Tenga en cuenta que esta operación tiene un costo de O (n) ya que creará una nueva matriz cada vez.

Por supuesto, esta es una forma engorrosa de eliminar un elemento de la matriz y, si realiza este tipo de operaciones con regularidad, podría ser más sensato utilizar Java Collections Framework.

3. Uso de una implementación de lista

Para mantener aproximadamente la misma semántica de la estructura de datos (una secuencia ordenada de elementos que son accesibles por índice), tiene sentido usar una implementación de la interfaz List .

Las dos implementaciones más comunes son ArrayList y LinkedList .

Supongamos que tenemos las siguientes listas :

List arrayList = new ArrayList(); // populate the ArrayList List linkedList = new LinkedList(); // populate the LinkedList

Dado que ambas clases implementan la misma interfaz, el código de ejemplo para eliminar el primer elemento tiene el mismo aspecto:

arrayList.remove(0); linkedList.remove(0);

En el caso de ArrayList , el costo de eliminación es O (n) , mientras que LinkedList tiene un costo de O (1) .

Ahora, esto no significa que debamos usar una LinkedList en todas partes como predeterminada, ya que el costo de recuperar un objeto es al revés. El costo de llamar a get (i) es O (1) en el caso de ArrayList y O (n) en el caso de LinkedList .

4. Conclusión

Hemos visto cómo eliminar el primer elemento de una matriz en Java. Además, hemos visto cómo lograr el mismo resultado utilizando Java Collections Framework.

Puede encontrar el código de ejemplo en GitHub.