Recomendado, 2024

Escolha Do Editor

Diferença entre ArrayList e Vector em Java

ArrayList e Vector são as classes na hierarquia de estrutura de coleção. ArrayList e Vector, ambos são usados ​​para criar um array dinâmico de objetos onde o array pode crescer em tamanho conforme e quando necessário. Existem duas diferenças básicas que distinguem ArrayList e Vector é que Vector pertence a classes Legacy que foram posteriormente reprojetadas para suportar as classes de coleção, enquanto que uma ArrayList é uma classe de coleção padrão. Outra diferença importante é que ArrayList não é sincronizado por outro lado; Vector está sincronizado.

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çãoArrayListVetor
BasicA classe ArrayList não está sincronizada.A classe vetorial é sincronizada.
Classe legadaArrayList é uma classe de coleção padrão.Vector é uma classe legada, reprojetada para suportar a classe de coleção.
Declaração de Classeclasse ArrayListvetor de classe
RealocaçãoQuando não especificado, um ArrayList é incrementado pela metade do seu tamanho.Quando não especificado, um vetor é incrementado para duplicar seu tamanho.
atuaçãoComo 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 / IteradorArrayList 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

  1. 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 .
  2. 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.
  3. 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.
  4. Vector usa Enumeração, bem como Iterador, para percorrer uma matriz, enquanto que, uma ArrayList usa apenas o iterador para percorrer uma matriz.
  5. 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:

  1. ArrayList e Vector ambos são definidos no pacote java.util.
  2. ArrayList e Vector estendem a classe AbsractList.
  3. ArrayList e Vector ambos implementam interface List.
  4. ArrayList e Vectors são usados ​​para criar uma matriz dinâmica que cresce conforme necessário.
  5. 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.

Top