Maison  >  Article  >  Java  >  Questions d'entretien sur les nouvelles Java 2020 - Conteneurs (2)

Questions d'entretien sur les nouvelles Java 2020 - Conteneurs (2)

王林
王林avant
2020-04-11 15:42:281999parcourir

Questions d'entretien sur les nouvelles Java 2020 - Conteneurs (2)

1. Parlez-moi du principe de mise en œuvre de HashMap ?

Présentation de HashMap : HashMap est une implémentation asynchrone de l'interface Map basée sur des tables de hachage. Cette implémentation fournit toutes les opérations de mappage facultatives et autorise les valeurs nulles et les clés nulles. Cette classe ne garantit pas l'ordre du mappage, et en particulier elle ne garantit pas que l'ordre soit immuable.

Structure de données HashMap : dans le langage de programmation Java, il existe deux structures de base, l'une est un tableau et l'autre est un pointeur simulé (référence). Toutes les structures de données peuvent utiliser ces deux structures de base. construction, HashMap ne fait pas exception. HashMap est en fait une structure de données de « hachage de liste chaînée », qui est une combinaison d'un tableau et d'une liste chaînée.

(Tutoriel recommandé : Démarrage rapide Java )

Lorsque nous mettons des éléments dans le Hashmap, recalculons d'abord la valeur de hachage en fonction du hashcode de la clé et éliminons le valeur de hachage pour obtenir ceci La position (indice) de l'élément dans le tableau Si le tableau stocke déjà d'autres éléments à cette position, alors les éléments à cette position seront stockés sous la forme d'une liste chaînée, avec les nouveaux ajoutés. placé en tête de la chaîne, et le premier ajouté. Mettez-le à la fin de la chaîne. S'il n'y a aucun élément à cette position dans le tableau, placez l'élément directement à cette position dans le tableau.

Il convient de noter que l'implémentation de HashMap a été optimisée dans Jdk 1.8. Lorsque les données de nœud dans la liste chaînée dépassent huit, la liste chaînée sera convertie en un arbre rouge-noir pour améliorer l'efficacité des requêtes. de l'original O(n) To O(logn)

2. Parlez-moi du principe de mise en œuvre de HashSet ?

La couche inférieure de HashSet est implémentée par HashMap

La valeur de HashSet est stockée dans la clé de HashMap

La valeur de HashMap est unifiée comme PRESENT

(Apprentissage connexe : Questions d'entretien courantes Java)

3. Quelle est la différence entre ArrayList et LinkedList ?

La différence la plus évidente est que la structure de données sous-jacente d'ArrrayList est un tableau et prend en charge l'accès aléatoire, tandis que la structure de données sous-jacente de LinkedList est une liste chaînée doublement circulaire et ne prend pas en charge l'accès aléatoire. Pour accéder à un élément à l'aide d'un indice, la complexité temporelle de ArrayList est O(1), tandis que celle de LinkedList est O(n).

4. Comment convertir entre un tableau et une liste ?

Convertir la liste en tableau : appelez la méthode toArray d'ArrayList.

Convertir un tableau en Liste : appelez la méthode asList de Arrays.

5. Quelle est la différence entre ArrayList et Vector ?

Vector est synchronisé, mais ArrayList ne l'est pas. Cependant, si vous souhaitez apporter des modifications à la liste lors d'une itération, vous devez utiliser CopyOnWriteArrayList.

ArrayList est plus rapide que Vector Il ne sera pas surchargé à cause de la synchronisation.

ArrayList est plus polyvalent car nous pouvons facilement obtenir des listes synchronisées et des listes en lecture seule à l'aide de la classe utilitaire Collections.

Tutoriels vidéo associés recommandés : Tutoriel vidéo Java

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer