Container
18. Quais são os recipientes java?
Catálogo de embalagens comumente usadas:
19. Qual é a diferença entre Coleção e Coleções?
-
java.util.Collection é uma interface de coleção (uma interface de nível superior da classe de coleção). Ele fornece um método de interface comum para operações básicas em objetos de coleção. A interface Collection possui muitas implementações concretas na biblioteca de classes Java. O significado da interface Collection é fornecer um modo máximo de operação unificada para várias coleções específicas, cujas interfaces de herança direta são List e Set.
-
Coleções é uma classe de ferramenta / ajuda para coleções, que fornece uma série de métodos estáticos para operações de classificação, pesquisa e segurança de encadeamento em elementos da coleção.
20. Qual a diferença entre Lista, Conjunto e Mapa?
21. Qual é a diferença entre o HashMap e o Hashtable?
-
O hashMap remove o método contains de HashTable, mas adiciona os métodos containsValue () e containsKey ().
-
HashTable é síncrono e HashMap é assíncrono, portanto, hashTable é mais eficiente.
-
O HashMap permite chaves vazias, mas a hashTable não.
22. Como decidir se deve usar o HashMap ou o TreeMap?
Para operações como inserir, excluir e localizar elementos no mapa, o HashMap é a melhor opção. No entanto, se você precisar percorrer um conjunto ordenado de chaves, o TreeMap é uma escolha melhor. Com base no tamanho da sua coleção, pode ser mais rápido adicionar elementos ao HashMap .. Altere o mapa para um TreeMap para o deslocamento ordenado da chave.
23. Qual é o princípio de implementação do HashMap?
Visão geral do HashMap: O HashMap é uma implementação assíncrona da interface do Mapa com base em tabelas de hash. Essa implementação fornece todas as operações de mapeamento opcionais e permite o uso de valores nulos e chaves nulas. Essa classe não garante a ordem do mapeamento, em particular, não garante que a ordem não seja alterada para sempre.
Estrutura de dados do HashMap: Na linguagem de programação Java, existem duas estruturas básicas, uma é uma matriz e a outra é um ponteiro analógico (referência) .Todas as estruturas de dados podem ser construídas com essas duas estruturas básicas. Sem exceção. O HashMap é na verdade uma estrutura de dados "hash de lista vinculada", que é uma combinação de matriz e lista vinculada.
Quando colocamos um elemento no Hashmap, primeiro recalculamos o valor de hash de acordo com o código de hash da chave, erradicamos o valor de hash para obter a posição (subscrito) desse elemento na matriz, se a matriz já armazena outros elementos nessa posição, em seguida, em O elemento nesta posição será armazenado na forma de uma lista vinculada, o recém-adicionado será colocado no topo da cadeia e o primeiro adicionado no final da cadeia. Se não houver nenhum elemento nessa posição na matriz, o elemento será diretamente colocado nessa posição na matriz.
Deve-se observar que a implementação do HashMap é otimizada no Jdk 1.8. Quando os dados do nó na lista vinculada excederem oito, a lista vinculada será convertida em uma árvore vermelho-preta para melhorar a eficiência da consulta, do O (n) ao O original (logn)
24. Conte-nos sobre o princípio de realização do HashSet?
-
A camada inferior do HashSet é realizada pelo HashMap
-
O valor do HashSet é armazenado na chave do HashMap
-
O valor do HashMap é unificado como PRESENT
25. Qual é a diferença entre ArrayList e LinkedList?
A diferença mais óbvia é que a estrutura de dados subjacente de ArrrayList é uma matriz que suporta acesso aleatório, enquanto a estrutura de dados subjacente de LinkedList é uma lista vinculada duplamente circular, que não suporta acesso aleatório. Para acessar um elemento usando subscritos, a complexidade de tempo de ArrayList é O (1), enquanto LinkedList é O (n).
26. Como converter entre array e lista?
-
Listar em uma matriz: chame o método toArray de ArrayList.
-
Conversão de matrizes em lista: chame o método asList de matrizes.
27. Qual é a diferença entre ArrayList e Vector?
-
Vetor é síncrono, enquanto ArrayList não. No entanto, se você tentar fazer alterações na lista durante a iteração, use CopyOnWriteArrayList.
-
ArrayList é mais rápido que Vector, não será sobrecarregado por causa da sincronização.
-
ArrayList é mais versátil, porque podemos usar a classe de utilitário Collections para obter facilmente listas sincronizadas e somente leitura.
28. Qual é a diferença entre Array e ArrayList?
-
Matriz pode conter tipos e objetos básicos, enquanto ArrayList pode conter apenas objetos.
-
Matriz é um tamanho especificado e tamanho ArrayList é fixo.
-
Matriz não fornece a versatilidade de ArrayList, como addAll, removeAll e iterador.
29. Qual é a diferença entre poll () e remove () na fila?
Poll () e remove () recebem um elemento da fila, mas poll () retornará vazio quando o elemento não conseguir, mas lançará uma exceção quando remove () falhar.
30. Quais classes de coleção são seguras para threads?
-
vetor: existe mais mecanismo de sincronização (segurança de encadeamento) que o arraylist, por causa da baixa eficiência, não é recomendável usar agora. Em aplicativos da Web, especialmente na primeira página, a eficiência (velocidade de resposta da página) costuma ter prioridade.
-
statck: Classe de pilha, primeiro a entrar, primeiro a sair.
-
hashtable: é mais seguro para threads do que o hashmap.
-
enumeração: enumeração, equivalente ao iterador.
31. O que é o iterador?
O iterador é um padrão de design, é um objeto, pode atravessar e selecionar objetos na sequência e os desenvolvedores não precisam entender a estrutura subjacente da sequência. Os iteradores são frequentemente referidos como objetos "leves" devido ao baixo custo de sua criação.
32. Como usar o Iterator? Quais são as características?
A função Iterator em Java é relativamente simples e só pode se mover em uma direção:
(1) O uso do método iterador () requer que o contêiner retorne um iterador. A primeira vez que o método next () do Iterator é chamado, ele retorna o primeiro elemento da sequência. Nota: O método iterator () é a interface java.lang.Iterable, herdada por Collection.
(2) Use next () para obter o próximo elemento na sequência.
(3) Use hasNext () para verificar se ainda existem elementos na sequência.
(4) Use remove () para excluir o elemento recém-retornado do iterador.
O iterador é a implementação mais simples do iterador Java. O ListIterator projetado para List possui mais funções. Ele pode percorrer a lista de duas direções e inserir e excluir elementos da lista.
33. Qual é a diferença entre Iterator e ListIterator?
-
O iterador pode ser usado para percorrer a coleção Set e List, mas o ListIterator pode ser usado apenas para percorrer a lista.
-
O Iterator pode apenas avançar a coleção, o ListIterator pode ser tanto para frente quanto para trás.
-
ListIterator implementa a interface Iterator e contém outras funções, como: adição de elementos, substituição de elementos, obtenção do índice dos elementos anteriores e seguintes, e assim por diante.
34. Como garantir que uma coleção não possa ser modificada ?
Então, como garantimos que uma coleção não possa ser modificada? Primeiro, precisamos deixar claro que coleções (mapa, conjunto, lista ...) são todos tipos de referência; portanto, se modificarmos com final, o conteúdo da coleção ainda poderá ser modificado.
Podemos fazer um experimento:
Como você pode ver: definimos uma coleção de mapas com a palavra-chave final. Neste momento, passamos um valor para a coleção. O primeiro par de valores-chave é 1,1; depois de modificá-lo, podemos alterar o valor da chave 1 para 100. Explique que podemos modificar o valor da coleção de mapas.
O que devemos fazer para garantir que a coleção não seja modificada?
Podemos usar o método unmodifiableMap no pacote Collections.O mapa retornado por este método não pode ser modificado. Ele relatará um erro java.lang.UnsupportedOperationException.
Da mesma forma: o pacote Coleções também fornece métodos para a lista e definir coleções.
Collections.unmodifiableList (List)
Collections.unmodifiableSet (Set)
(Fim)