Diferença entre ArrayList e vetor em Java

Autor: Laura McKinney
Data De Criação: 1 Abril 2021
Data De Atualização: 1 Poderia 2024
Anonim
Diferença entre ArrayList e vetor em Java - Tecnologia
Diferença entre ArrayList e vetor em Java - Tecnologia

Contente


ArrayList e Vector são as classes na hierarquia do Collection Collection. ArrayList e Vector, ambos são usados ​​para criar uma matriz dinâmica de objetos em que a matriz pode crescer em tamanho conforme e quando necessário. Existem duas diferenças básicas que distinguem ArrayList e Vector: o Vector pertence às classes Legacy que foram reengenharia posteriormente para dar suporte às classes de coleção, enquanto que um ArrayList é uma classe de coleção padrão. Outra diferença importante é que o ArrayList não é sincronizado, por outro lado; O vetor está sincronizado.

Vamos estudar algumas outras diferenças com a ajuda do Gráfico de comparação mostrado abaixo.

  1. Gráfico de comparação
  2. Definição
  3. Principais diferenças
  4. Semelhanças
  5. Conclusão

Gráfico de comparação

Base para ComparaçãoArrayListVetor
BasicA classe ArrayList não está sincronizada.A classe de vetor é sincronizada.
Classe herdadaArrayList é uma classe Collection padrão.Vector é uma classe herdada, reprojetada para oferecer suporte à 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 dobrar seu tamanho.
atuaçãoComo ArrayList não é sincronizado, ele opera mais rapidamente que Vector.Como o vetor é sincronizado, ele opera mais lentamente 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 Iterator para percorrer os objetos armazenados nos vetores.


Definição de ArrayList

ArrayList pertence à lista de classes de coleção padrão. A classe ArrayList é definida dentro do java.util pacote, estende o AbstractList classe que também é uma classe de coleção padrão e também implementa Lista, uma interface definida em interfaces de coleção. Em Java, uma matriz padrão é sempre de comprimento fixo. Isso significa que uma vez criado; não cresce nem diminui dinamicamente em tamanho. Portanto, você deve ter o conhecimento prévio do comprimento da matriz que está usando. Mas, às vezes, pode acontecer que o comprimento necessário seja revelado em tempo de execução, portanto, para lidar com esse tipo de situação, java introduziu ArrayList.

O ArrayList é uma classe usada para criação dinâmica de uma matriz que mantém as referências aos objetos. Essa matriz pode crescer em tamanho conforme e quando necessário. A declaração de classe é a seguinte:


classe ArrayList

Aqui, E especifica o tipo de objetos que uma matriz manterá. A matriz criada é de tamanho variável e aumenta e diminui de tamanho quando objetos são adicionados ou removidos da lista.

O ArrayList não está sincronizado, o que significa que mais de um encadeamento pode operar no array ao mesmo tempo. Por exemplo, se um thread estiver adicionando uma referência de objeto à matriz e outro thread estiver removendo uma referência de objeto da mesma matriz ao mesmo tempo. A criação de uma matriz dinâmica usando a classe ArrayList:

ArrayList S1 = nova ArrayList(); System.out.ln ("Tamanho inicial de S1:" + S1.size ()); S1.adicionar ("T"); S1.adicionar ("C"); S1.adicionar ("H"); S1.add (1, "E"); System.out.ln ("Após a adição S1 contém:" + S1); System.out.ln ("Tamanho de S1 após adição:" + S1.size ()); S1.remove ("T"); S1.remove (2); System.out.ln ("Após a exclusão, S1 contém:" + S1); System.out.ln ("Tamanho de S1 após exclusão:" + S1.size ()); // Tamanho da saída inicial de S1: 0 Após a adição, S1 contém:; Tamanho de S1 após adição: 4 Após exclusão, S1 contém: Tamanho de S1 após exclusão: 2

No código acima, você pode ver isso; Eu criei uma matriz de objetos do tipo string. Adicionei alguns objetos à matriz S1 usando o método add () e, posteriormente, excluí alguns objetos usando o método remove (). Você pode observar se não especificar o tamanho inicial da matriz, que terá o comprimento '0'. Como você pode ver, a matriz aumenta e diminui de tamanho à medida que você adiciona e exclui os elementos.

Definição de vetor

Vector é uma classe Legacy que foi reengenharia para oferecer suporte à classe de coleção na hierarquia do Collection Framework. A classe de vetor também é definida em java.util pacote, estendido por AbstractList classe e implementado pelo Lista interface. A classe Vector é declarada da seguinte maneira:

vetor de classe

Aqui, o E define o tipo de objeto que será armazenado em uma matriz. 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 da matriz usando Vector.

Vetor V = novo vetor(1,1); V.addElement ("Tech"); V.addElement ("Diferenças"); System.out.ln ("Capacidade após adição 2:" + V.capacity ()); V.addElement ("Between"); V.addElement ("Vetores"); System.out.ln ("Capacidade atual:" + capacidade V. ()); // Capacidade de saída após 2 adições: 2 Capacidade atual: 4

No código acima, você pode ver que, mencionei o tamanho e o valor do incremento no construtor Vector, respectivamente, enquanto declara a matriz de objetos de string. Portanto, você pode observar que, à medida que o limite da matriz termina, ele aumenta pelo valor fornecido ao construtor durante a declaração.

  1. Vários threads podem operar no ArrayList ao mesmo tempo, portanto, é considerado não sincronizado. Diferentemente de ArrayList, apenas um único thread pode operar em um vetor de cada vez; portanto, é chamado Sincronizado.
  2. Em uma versão anterior do Java, algumas classes e interfaces forneceriam os métodos para armazenar objetos que foram chamados de classes herdadas. O vetor faz parte da classe herdada de Java. Posteriormente, essas classes herdadas foram redesenhadas para oferecer suporte à classe Collection, enquanto a classe ArrayList é uma classe Collection padrão.
  3. Quando o limite de uma matriz é totalmente utilizado e um novo objeto é adicionado ao lado da matriz esgotada, seu tamanho aumenta nos dois casos, ou seja, 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, seu tamanho é dobrado se o valor do incremento não for especificado.
  4. O vetor usa a enumeração e o iterador para percorrer uma matriz, enquanto um ArrayList usa apenas o iterador para percorrer uma matriz.
  5. Como ArrayList não é sincronizado e muitos threads podem operar nele ao mesmo tempo, seu desempenho é melhor que Vector, no qual apenas um thread pode operar por vez.

Semelhanças:

  1. ArrayList e Vector são definidos no pacote java.util.
  2. ArrayList e Vector estendem a classe AbsractList.
  3. ArrayList e Vector implementam a 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 a objetos.

Conclusão:

Concluo dizendo que o uso de ArrayList é melhor do que o Vector, pois ele executa mais rápido e melhor.