Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Arraylist e lista

Qual a diferença e arraylist para list?

4 respostas
solução!

List é a interface e ArrayList a implementação. Você não consegue, por exemplo, fazer:

List lista = new List();

Mas por outro lado pode fazer:

ArrayList lista = new ArrayList();

List é uma maneira de declarar uma lista genérica, a arrayList vai especificar alguns termos de sua interface na sua aplicação, por exemplo:

List passagem = new ArrayList();

Resumindo, você acessará apenas aos métodos da interface List, que ArrayList implementa, sendo que List não implementa nenhum método.

Qualquer dúvida a mais, você pode acessar esse link: https://permita.me/?q=diference+between+list+arraylist+java

A classe ArrayList é uma implementação da interface List que utiliza um vetor para armazenar elementos. Uma vez que vetores tem tamanho fixo em Java, a classe ArrayList se encarrega de criar um novo vetor (internamente) com um tamanho maior e copiar seus elementos correntes para esse novo vetor sempre que for necessário.

O vetor interno da classe ArrayList é recriado quando há remoções de elemento, adições de elemento no fim da lista além da capacidade dimensionada e adições de elementos que não no final da lista.

Como a operação de recriação do vetor é custosa, busque dimensionar previamente o tamanho da lista, para tal, utilize o construtor sobrecarregado ArrayList(int) enviando como argumento a capacidade inicial da lista. A capacidade inicial padrão de um objeto ArrayList é de 10 elementos.

Cara, List é uma interface, ela define um contrato e todas as outras classes que "assinam" esse contrato devem implementar os métodos que a interface List define. ArrayList assim como outras classes, como por exemplo, LinkedList, Vector e outras, implementam a interface List, o beneficio disso é que você ganha em polimorfismo ou seja, você pode referenciar um objeto mais especifico através de uma interface mais genérica. O mais indicado é que quando você for utilizar qualquer uma das classes que implementam a interface List, você utilize o tipo como List.

Assim sendo, você pode fazer:

        List<String> nomesArrayList = new ArrayList<String>();

        List<String> nomesLinkedList = new LinkedList<String>();

        List<String> nomesVector = new Vector<String>();

Vantagem disso? quando você precisar de um método que receba uma Lista de nomes, você pode fazer algo do tipo:

    public void imprimeNomes(List<String> lista) {
        lista.forEach(nome -> System.out.println(nome));
    }

Veja que no método recebe simplismente List<String> , ou seja, você pode passar qualquer uma das três listas criadas acima. Isso é polimorfismo!