Coleção de perguntas da entrevista (2)

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)

Publicado 9 artigos originais · gostei 0 · visitas 247

Acho que você gosta

Origin blog.csdn.net/Fabri/article/details/105175000
Recomendado
Clasificación