A diferença entre Java Array e Arraylist
1) Explicação incisiva:
Pense no ArrayList como uma "matriz que amplifica automaticamente a capacidade".
2) Array ([]): o mais eficiente; Mas sua capacidade é fixa e não pode ser alterada dinamicamente;
Arraylist: a capacidade pode crescer dinamicamente; mas eficiência de sacrifício;
3) Sugestões:
Com base na eficiência e na verificação do tipo, a matriz deve ser usada o máximo possível. Arraylist deve ser usado apenas se o tamanho da matriz não puder ser determinado!
Mas quando você tenta resolver problemas mais gerais, a funcionalidade do Array pode ser muito limitada.
4) Tudo no Java é um objeto e a matriz também é um objeto. Independentemente do tipo de matriz que você usa,
O nome da matriz em si é na verdade uma referência, apontando para um objeto real dentro da pilha.
Este objeto pode ser gerado automaticamente através da "Sintaxe da inicialização da matriz" ou manualmente em uma nova expressão.
5) A matriz pode ser usada como um valor de retorno de função, pois é a referência do objeto;
6) A matriz de objetos é quase exatamente a mesma que a matriz de tipos básicos em uso. A única diferença é que o primeiro possui uma referência, enquanto o último mantém diretamente o valor do tipo básico;
Por exemplo:
String [] Staff = New String [100]; int [] num = new int [10];
7) O que o contêiner é realmente uma referência apontando para o objeto, para que qualquer tipo possa ser armazenado. Obviamente, isso não inclui o tipo básico, porque o tipo básico não herda de nenhuma classes.
8) Em face da matriz, podemos manter diretamente a matriz do valor básico do tipo (por exemplo: int [] num;) ou a matriz da referência (apontando para o objeto); Mas a classe de contêiner pode apenas manter a referência (apontando para o objeto). Para colocar o tipo básico no contêiner, precisamos usar a classe Wrapper. No entanto, a classe Wrapper pode não ser fácil de usar. Além disso, a eficiência da matriz primitiva é muito melhor que o contêiner que "aceita referências de tipos básicos".
Obviamente, se o seu objeto operacional for do tipo básico e precisar ampliar automaticamente a capacidade quando houver espaço insuficiente, a matriz não será adequada; portanto, você precisará usar um contêiner do tipo capa.
9) Em alguns casos, as classes de contêiner ainda podem operar corretamente, mesmo que não tenham se transformado em seu tipo original. Existe uma situação especialmente especial: o compilador fornece um suporte extra para a classe String para fazê -la funcionar sem problemas.
10) Algumas operações básicas em matrizes, como classificação, pesquisa e comparação, são muito comuns. Portanto, a classe Matriz é fornecida em Java para auxiliar nessas operações: Sort (), BinarySearch (), Equals (), Fill (), ASList ().
No entanto, a classe Matriz não fornece um método de exclusão e existe um método remove () no ArrayList. Não sei se é porque não é necessário executar operações de exclusão na matriz (porque você deve usar a lista vinculada no momento).
11) O uso do ArrayList também é muito simples: gerar uma lista de Array, use add () para colocar objetos e usar get (i) para corresponder ao valor do índice para removê -los. Tudo isso é exatamente o mesmo que o uso da Array, mas há apenas menos [].
2. Materiais de referência:
1) Eficiência:
A expansão da matriz é um fator que tem um impacto maior na eficiência do Arraylist.
Sempre que métodos como add, addRange, insert, inserTrange forem executados, eles verificarão se a capacidade da matriz interna é insuficiente. Nesse caso, ele reconstruirá uma matriz com o dobro da capacidade atual, copiará os elementos antigos para a nova matriz e descartará a matriz antiga. A operação de expansão nesse ponto crítico deve ser mais influente na eficiência.
Arraylist é uma versão complexa da matriz
Arraylist encapsula uma matriz do tipo objetos. Em geral, não tem diferença essencial de uma matriz. Mesmo muitos métodos de Arraylist, como índice, indexOF, contém, classificar etc., diretamente chamam os métodos correspondentes da Array com base na matriz interna.
2) Identificação do tipo:
Quando a ArrayList armazena um objeto, as informações do tipo são descartadas e todos os objetos são bloqueados como objeto. O tipo não é verificado durante a compilação, mas um erro será relatado em tempo de execução.
A diferença entre o Arraylist e o Array se deve principalmente à eficiência do aumento da capacidade dinâmica.
3) Arraylist pode armazenar qualquer objeto, como string, etc.
Obrigado pela leitura, espero que isso possa ajudá -lo. Obrigado pelo seu apoio a este site!