Obtener capacidad de un ArrayList

publicado por: Anonymous

En un ejercicio se me pide obtener el tamaño y la capacidad de un Vector y ArrayList llenados previamente.

En el caso del vector no hay muchos problemas para realizarlo, porque dispone de un metodo.

Vector<Object> planetas = new Vector<>();

    planetas.add("Jupiter");
    planetas.add("Marte");
    planetas.add("Mercurio");
    planetas.add("Neptuno");
    planetas.add("Pluton");
    planetas.add("Saturno");
    planetas.add("Tierra");
    planetas.add("Urano");
    planetas.add("Venus");

System.out.println(planetas.size());
System.out.println(planetas.capacity());

Pero mi problema es con el ArrayList, de que si dispongo del metodo .size() pero no hay nada parecido al .capacity() del Vector.

¿Sabrían decirme si hay algún método o alguna forma de obtener la capacidad ?

solución

Del Javadoc.

Each ArrayList instance has a capacity. The capacity is the size of the array used to store the elements in the list. It is always at least as large as the list size. As elements are added to an ArrayList, its capacity grows automatically. The details of the growth policy are not specified beyond the fact that adding an element has constant amortized time cost.

De eso se desprende que hay dos posibles respuestas:

  • “No se conoce con exactitud, pero como mínimo es ” + miArrayList.size(). Puedes añadir también ” y como máximo es la longitud máxima de array soportada por la JVM” (aunque lo encuentro un poco pedante)

  • Usar trimToSize() y después decir que la capacidad es miArrayList.size().

Yo votaría por la primera respuesta, sería una pregunta para ver si se distingue la diferencia entre especificación e implementación.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *