ArrayList

E ae pessoal blz?

Seguinte… tb tô na jornada da SCJP… na verdade tô na fase agora de fazer apenas simulados e ver
o que os caras podem colocar como casca de banana…

To com uma dúvida bem básica…

Tipo:

quando criamos um arraylist, passando
um numero, esse número será o tamanho do array certo?? Até aí blz… esse construtor
tá sem problemas…

mas, e enquanto ao outro construtor que recebe uma collection???

O que ele faz??

Ex.:

  List minhaLista = new ArrayList(new ArrayList());

valeu []´s

de uma olhada na API, nao sei se esta bastante claro mas ele cria uma lista do tamanho da que vc passou com tamanhao de 110% do tamanho da outra;

ArrayList implementa Collection

a API explica melhor…

http://java.sun.com/j2se/1.4.2/docs/api/java/util/ArrayList.html#ArrayList(java.util.Collection)

ArrayList

public ArrayList(Collection c)

Constructs a list containing the elements of the specified collection, in the order they are returned by the collection's iterator. The ArrayList instance has an initial capacity of 110% the size of the specified collection.

Parameters:
c - the collection whose elements are to be placed into this list.
Throws:
NullPointerException - if the specified collection is null.

Kra seu eu compreendi bem sua pergunta os a ArrayList cria um array que cresce dinamicamente ou diminui dinamicamente. Seu tamanho depende da quantidade de valores que vc insere ou retira.

É isso que vc ta querendo saber?

[quote=anderson.bonavides]Kra seu eu compreendi bem sua pergunta os a ArrayList cria um array que cresce dinamicamente ou diminui dinamicamente. Seu tamanho depende da quantidade de valores que vc insere ou retira.

É isso que vc ta querendo saber?[/quote]

Não… esse eu sei… a questão é:

No construtor de um arrayList eu posso passar um numero (que será o tamanho que ele irá iniciar) e
tenho a opção de passar uma collection…

é nesse do collection que to em duvida…

Opa…

Olha o construtor do ArrayList com Collection

public ArrayList(Collection<? extends E> c) { size = c.size(); // Allow 10% room for growth int capacity = (int) Math.min((size*110L)/100, Integer.MAX_VALUE); elementData = (E[]) c.toArray(new Object[capacity]); }

Pelo que entendi, ele apenas converte o Collection em Array e monta o ArrayList normalmente… a diferença esta nesse tamanho de 110% que ele cria… n entendi o motivo dessa capacidade, mas me parece ser por causa de segurança ou por alguns metadados que o Collection deve possuir no método toArray() e o ArrayList não…