Maison > Java > JavaQuestions d'entretien > Questions d'entretien courantes sur les conteneurs Java

Questions d'entretien courantes sur les conteneurs Java

(*-*)浩
Libérer: 2019-12-18 15:17:34
original
2303 Les gens l'ont consulté

Questions d'entretien courantes sur les conteneurs Java

Que sont les conteneurs Java ? (Apprentissage recommandé : Questions du test commun Java )

Questions dentretien courantes sur les conteneurs Java

Quelle est la différence entre ?

java.util.Collection est une interface de collection (une interface de niveau supérieur pour les classes de collection). Il fournit des méthodes d'interface communes pour les opérations de base sur les objets de collection. L'interface Collection possède de nombreuses implémentations spécifiques dans la bibliothèque de classes Java.

L'importance de l'interface Collection est de fournir une méthode de fonctionnement unifiée maximisée pour diverses collections spécifiques. Ses interfaces directement héritées incluent List et Set.

Collections est une classe d'outils/classe d'assistance de la classe collection, qui fournit une série de méthodes statiques pour diverses opérations telles que le tri, la recherche et la sécurité des threads des éléments de la collection

Quelle est la différence entre List, Set et Map ?

Questions dentretien courantes sur les conteneurs Java

Quelle est la différence entre HashMap et Hashtable ?

hashMap supprime la méthode contain de HashTable, mais ajoute les méthodes containValue() et containKey().

HashTable est synchrone, tandis que HashMap est asynchrone et plus efficace que hashTable.

hashMap autorise les valeurs de clé vides, mais pas hashTable.

Comment décider d'utiliser HashMap ou TreeMap ?

Pour les opérations telles que l'insertion, la suppression et le positionnement d'éléments dans Map, HashMap est le meilleur choix. Cependant, si vous devez parcourir une collection ordonnée de clés, TreeMap est un meilleur choix. En fonction de la taille de votre collection, il peut être plus rapide d'ajouter des éléments à un HashMap et de remplacer la carte par un TreeMap pour un parcours ordonné des clés.

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.

Lorsque nous mettons un élément dans le Hashmap, nous recalculons d'abord la valeur de hachage en fonction du code de hachage de la clé, et obtenons la position (indice) de l'élément dans le tableau en fonction de la valeur de hachage. Le tableau est déjà stocké à cette position. Si d'autres éléments sont ajoutés, les éléments à cette position seront stockés sous la forme d'une liste chaînée. Les éléments nouvellement ajoutés seront placés en tête de la chaîne et les premiers éléments ajoutés le seront. placé à la fin de la chaîne. S'il n'y a aucun élément à cette position dans le tableau, l'élément sera directement placé dans la liste chaînée à 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) à O(logn)

, parlez 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

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 circulaire bidirectionnelle 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).

Comment convertir entre tableau et 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.

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 car il est synchronisé et ne sera pas surchargé.

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.

Quelle est la différence entre Array et ArrayList ?

Array peut contenir des types et des objets de base, tandis qu'ArrayList ne peut contenir que des objets.

Le tableau est immuable après avoir spécifié la taille, tandis que la taille de ArrayList est variable.

Array ne fournit pas autant de fonctions qu'ArrayList, telles que addAll, RemoveAll et iterator.

Quelle est la différence entre poll() et remove() dans la file d'attente ?

Poll() et Remove() suppriment tous deux un élément de la file d'attente, mais poll() retournera vide s'il ne parvient pas à obtenir l'élément, mais Remove() lèvera une exception lorsqu'il échoue.

Quelles classes de collection sont thread-safe ?

vecteur : Il dispose d'un mécanisme de synchronisation de plus (sécurité des threads) que arraylist. En raison de sa faible efficacité, son utilisation n'est plus recommandée. Dans les applications Web, en particulier les pages frontales, l'efficacité (vitesse de réponse des pages) est souvent une priorité.

statck : classe de pile, premier entré, dernier sorti.

hashtable : elle est plus thread-safe que hashmap.

énumération : Énumération, équivalent à l'itérateur.

Qu'est-ce qu'un itérateur ?

Un itérateur est un modèle de conception qui est un objet qui parcourt et sélectionne des objets dans une séquence sans que le développeur ait besoin de connaître la structure sous-jacente de la séquence. Les itérateurs sont souvent appelés objets « légers » car ils sont peu coûteux à créer.

Comment utiliser Iterator ? Quelles sont les caractéristiques ?

La fonction Iterator en Java est relativement simple et ne peut se déplacer que dans une seule direction :

(1) Utilisez la méthode iterator() pour demander au conteneur de renvoyer un Itérateur. La première fois que la méthode next() de l’Iterator est appelée, elle renvoie le premier élément de la séquence. Remarque : la méthode iterator() est l'interface java.lang.Iterable et est héritée par Collection.

(2) Utilisez next() pour obtenir l'élément suivant de la séquence.

(3) Utilisez hasNext() pour vérifier s'il y a encore des éléments dans la séquence.

(4) Utilisez Remove() pour supprimer l'élément nouvellement renvoyé par l'itérateur.

Iterator est l'implémentation la plus simple de l'itérateur Java. ListIterator conçu pour List a plus de fonctions. Il peut parcourir List dans deux directions et peut également insérer et supprimer des éléments de List.

Quelle est la différence entre Iterator et ListIterator ?

Iterator peut être utilisé pour parcourir les collections Set et List, mais ListIterator ne peut être utilisé que pour parcourir List.

Iterator ne peut parcourir une collection que vers l'avant, tandis que ListIterator peut parcourir à la fois vers l'avant et vers l'arrière.

ListIterator implémente l'interface Iterator et inclut d'autres fonctions, telles que l'ajout d'éléments, le remplacement d'éléments, l'obtention de l'index des éléments précédents et suivants, etc.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal