Cómo implementar usted mismo un ArrayList simple
ArrayList es la implementación clásica del marco de recopilación de Java. Su ventaja obvia sobre las matrices de uso común es que puede agregar y eliminar elementos a voluntad, independientemente del tamaño de la matriz.
Implementar un ArrayList simple El proceso de implementación es el siguiente:
Las principales características de implementación de ArrayList son las siguientes:
Constructor predeterminado y constructor de parámetros con uno. parámetro
agregar método
obtener método
método indexOf
contiene método
método de tamaño
método isEmpty
método de eliminación
Esta clase ArrayList simple se llama SimpleArrayList Para obtener el código completo, consulte el código SimpleArrayList
Constructor
El código fuente ArrayList a **** tiene tres constructores, un constructor sin parámetros, un constructor de tipo int parametrizado y un constructor de tipo Colección parametrizado. Los parámetros del constructor del tipo Colección se utilizan para implementar una herencia adicional de la clase contenedora de la clase Colección a ArrayList. Dado que no hay otras clases contenedoras que implementen manualmente la clase SimpleArrayList, solo se implementan dos métodos constructores. El código es el siguiente: public SimpleArrayList(){ this(DEFAULT_CAPACITY);
} public SimpleArrayList(int size){ if (size < 0){ throw new IllegalArgumentException("Tamaño predeterminado " + tamaño);
}else{
elementData = nuevo Objeto[tamaño];
}
}
}
}
DEFAULT_CAPACITY en un constructor sin referencia se define como privado. CAPACIDAD es una variable privada con un valor predeterminado de 10 que crea una matriz de tamaño 10. El parámetro int en el constructor parametrizado se utiliza para generar una matriz de objetos del tamaño especificado. La matriz creada se pasará a elementData. elementData es la matriz real utilizada para almacenar los elementos.
método add
El método add se utiliza para agregar elementos al contenedor. add tiene dos métodos sobrecargados, uno es add(E e) y el otro es add(int index, E e). add en sí es muy simple, pero tiene que lidiar con matrices dinámicas, es decir, expandir la memoria de la matriz cuando el tamaño de la matriz no cumple con los requisitos. El código específico es el siguiente: public void add(E e){
isCapacityEnough(size + 1);
elementData[size++] = e;
} p>
La función de este método esCapacityEnough es determinar si se necesita expansión. El parámetro pasado es el espacio mínimo que debe expandirse. El espacio de expansión mínimo, la nueva longitud, es todos los elementos + 1.
}
El primer método de eliminación es el método principal. Primero obtiene el valor del elemento de subíndice que se eliminará y luego determina el número de elementos que se avanzarán después de la indexación. Si el número es mayor que cero, se llama al método de la biblioteca para mover el elemento indexado una posición hacia adelante. Finalmente, elementData[-- size] = null reduce el tamaño y deja vacía la última posición original.
El segundo método de eliminación no necesita decirle al usuario el elemento correspondiente al subíndice que se eliminará como el primer método, solo necesita determinar si la eliminación fue exitosa. Si el elemento a eliminar está en la lista, la eliminación es exitosa; si no está en la lista, la eliminación falla. Por lo tanto, al llamar al método contiene, puede determinar si el elemento que desea eliminar está en la lista. cuando se llama a remove(int index), no cuando se devuelve un error.