Vamos estudar algumas outras diferenças com a ajuda do Gráfico de Comparação mostrado abaixo.
Gráfico de comparação
Base para Comparação | ArrayList | Vetor |
---|---|---|
Basic | A classe ArrayList não está sincronizada. | A classe vetorial é sincronizada. |
Classe legada | ArrayList é uma classe de coleção padrão. | Vector é uma classe legada, reprojetada para suportar a classe de coleção. |
Declaração de Classe | classe ArrayList | vetor de classe |
Realocação | Quando não especificado, um ArrayList é incrementado pela metade do seu tamanho. | Quando não especificado, um vetor é incrementado para duplicar seu tamanho. |
atuação | Como o ArrayList não está sincronizado, ele opera mais rápido que o Vector. | Como o Vector é sincronizado, ele opera mais lentamente do que o ArrayList. |
Enumeração / Iterador | ArrayList usa a interface Iterator para percorrer os objetos armazenados em ArrayList. | O vetor usa a enumeração e a interface do iterador para percorrer os objetos armazenados em Vetores. |
Definição de ArrayList
ArrayList pertence à lista de classes de coleção padrão. A classe ArrayList é definida dentro do pacote java.util, estende a classe AbstractList, que também é uma classe de coleção padrão, e também implementa List, uma interface definida em Interfaces de Coleta. Em Java, um array padrão é sempre de tamanho fixo. Isso significa que uma vez criado; ela não cresce ou diminui dinamicamente de tamanho. Portanto, você deve ter o conhecimento prévio do comprimento do array que está usando. Mas, às vezes, pode acontecer que o tamanho necessário seja revelado em tempo de execução, então, para lidar com esse tipo de situação, o java introduziu o ArrayList.
A ArrayList é uma classe usada para criação dinâmica de uma matriz que contém as referências aos objetos. Esse array pode crescer em tamanho conforme e quando necessário. A declaração da classe é a seguinte:
classe ArrayList
Aqui, E especifica o tipo de objetos que uma matriz conterá. A matriz criada é de tamanho variável e aumenta e diminui de tamanho quando os objetos são adicionados ou removidos da lista.
O ArrayList não está sincronizado, o que significa que mais de um thread pode operar no array ao mesmo tempo. Por exemplo, se um thread estiver adicionando uma referência de objeto ao array e outro thread estiver removendo uma referência de objeto do mesmo array ao mesmo tempo. A criação de um array dinâmico usando a classe ArrayList:
ArrayList S1 = novo ArrayList (); System.out.println ("Tamanho inicial de S1:" + S1.size ()); S1.add ("T"); S1.add ("C"); S1.add ("H"); S1.add (1, "E"); System.out.println ("Após a adição S1 contém:" + S1); System.out.println ("Tamanho de S1 após a adição:" + S1.size ()); S1.remove ("T"); S1.remove (2); System.out.println ("Após a exclusão S1 contém:" + S1); System.out.println ("Tamanho de S1 após a exclusão:" + S1.size ()); // OutputInitial size of S1: 0 Após a adição S1 contém: [T, E, C, H]; Tamanho de S1 após a adição: 4 Após a exclusão S1 contém: [E, H] Tamanho de S1 após a exclusão: 2
No código acima, você pode ver isso; Eu criei uma matriz de objetos do tipo string. Eu adicionei alguns objetos ao array S1 usando o método add (), e depois deletei alguns objetos usando o método remove (). Você pode observar se você não especificar o tamanho inicial da matriz que será de tamanho '0'. Como você pode ver, o array cresce e diminui de tamanho à medida que você adiciona e exclui os elementos.
Definição de vetor
Vector é uma classe Legacy que é recriada para suportar a classe de coleção na hierarquia do Collection Framework. A classe vector também é definida no pacote java.util, estendida pela classe AbstractList e implementada pela interface List . A classe Vector é declarada da seguinte forma:
vetor de classe
Aqui, o E define o tipo de objeto que será armazenado em um array. Uma matriz criada usando a classe Vector é de tamanho variável. Aumenta o dobro do tamanho se o incremento não for especificado. Vamos entender a criação do array usando Vector.
Vetor V = novo Vetor (1, 1); V.addElement ("Tech"); V.addElement ("Diferenças"); System.out.println ("Capacidade após 2 adições:" + V.capacity ()); V.addElement ("entre"); V.addElement ("Vectors"); System.out.println ("Capacidade atual:" + V.capacity ()); // Capacidade de saída após 2 adições: 2 Capacidade atual: 4
No código acima, você pode ver que, em particular, mencionei o tamanho e o valor de incremento no construtor de Vector, respectivamente, enquanto declarava a matriz de objetos de string. Portanto, você pode observar que, conforme o limite da matriz é concluído, ele é incrementado pelo valor fornecido ao construtor durante a declaração.
Principais diferenças entre ArrayList e vetores
- Vários segmentos podem operar no ArrayList ao mesmo tempo, portanto, é considerado não sincronizado . Ao contrário do ArrayList, apenas um único thread pode operar em um vetor por vez; daí é chamado Sincronizado .
- Em uma versão inicial do Java, algumas classes e interfaces forneceriam os métodos para armazenar objetos que eles eram chamados. Classes legadas Vector é uma entre a classe Legacy de Java. Posteriormente, essas classes legadas foram reprojetadas para suportar a classe Collection, enquanto a classe ArrayList é uma classe de coleção padrão.
- Quando o limite de um array é totalmente utilizado e um novo objeto é adicionado ao array exausto, seu tamanho aumenta em ambos os casos, isto é, em ArrayList e em Vector, mas a diferença é que em ArrayList, se não for especificado o tamanho é incrementado em 50% da matriz atual, enquanto que na matriz Vector é dobrado em tamanho se o valor de incremento não for especificado.
- Vector usa Enumeração, bem como Iterador, para percorrer uma matriz, enquanto que, uma ArrayList usa apenas o iterador para percorrer uma matriz.
- Como o ArrayList é Unsynchronized e muitos threads podem operar nele ao mesmo tempo, seu desempenho é melhor que o Vector no qual apenas um thread pode operar por vez.
Semelhanças:
- ArrayList e Vector ambos são definidos no pacote java.util.
- ArrayList e Vector estendem a classe AbsractList.
- ArrayList e Vector ambos implementam interface List.
- ArrayList e Vectors são usados para criar uma matriz dinâmica que cresce conforme necessário.
- ArrayList e Vector mantêm referências de objetos.
Conclusão:
Eu concluo dizendo que o uso de ArrayList é melhor do que usar o Vector como ele executa mais rápido e melhor.