


Différences entre les questions d'entrevue des collections Java
Quelle est la différence entre HashMap et Hashtable ?
HashMap et Hashtable implémentent tous deux l'interface Map, donc de nombreuses fonctionnalités sont très similaires. Cependant, ils présentent les différences suivantes : HashMap permet aux clés et aux valeurs d'être nulles, tandis que Hashtable ne permet pas aux clés ou aux valeurs d'être nulles. (Étude recommandée : questions d'entretien Java)
Hashtable est synchrone, mais HashMap ne l'est pas. Par conséquent, HashMap est plus adapté aux environnements monothread, tandis que Hashtable convient aux environnements multithread.
HashMap fournit une collection de clés qui peuvent être utilisées pour effectuer une itération. Par conséquent, HashMap est rapide en cas d'échec. D'un autre côté, Hashtable fournit une énumération de clés.
Hashtable est généralement considérée comme une classe héritée.
Quelle est la différence entre un tableau (Array) et une liste (ArrayList) ? Quand devez-vous utiliser Array au lieu d’ArrayList ?
Les différences entre Array et ArrayList sont répertoriées ci-dessous :
Array peut contenir des types de base et des types d'objets, et ArrayList ne peut contenir que des types d'objets.
La taille du tableau est fixe et la taille de l'ArrayList change dynamiquement.
ArrayList fournit plus de méthodes et de fonctionnalités, telles que : addAll(), removeAll(), iterator(), etc. Pour les types de données de base, les collections utilisent le boxing automatique pour réduire les efforts de codage. Cependant, cette approche est relativement lente lorsqu’il s’agit de types de données primitifs de taille fixe.
Quelle est la différence entre ArrayList et LinkedList ?
ArrayList et LinkedList implémentent l'interface List. Ils présentent les différences suivantes :
ArrayList est une interface de données basée sur un index et sa couche inférieure est un tableau. Il peut effectuer un accès aléatoire à des éléments avec une complexité temporelle O(1). En conséquence, LinkedList stocke ses données sous la forme d'une liste d'éléments. Chaque élément est lié à ses éléments précédents et suivants. Dans ce cas, la complexité temporelle de recherche d'un élément est O(n).
Par rapport à ArrayList, les opérations d'insertion, d'ajout et de suppression de LinkedList sont plus rapides car lorsqu'un élément est ajouté à n'importe quelle position de la collection, il n'est pas nécessaire de recalculer la taille ou de mettre à jour l'index comme un tableau.
LinkedList prend plus de mémoire que ArrayList car LinkedList stocke deux références pour chaque nœud, une pointant vers l'élément précédent et une pointant vers l'élément suivant.
Vous pouvez également vous référer à ArrayList vs LinkedList.
A quoi servent les interfaces Comparable et Comparator ? Énumérez leurs différences.
Java fournit l'interface Comparable qui ne contient qu'une seule méthode compareTo(). Cette méthode peut trier deux objets. Plus précisément, il renvoie des nombres négatifs, 0 et positifs pour indiquer que l'objet d'entrée est inférieur, égal ou supérieur à un objet existant.
Java fournit l'interface Comparator contenant deux méthodes : compare() et equals(). La méthode compare() est utilisée pour trier deux paramètres d'entrée et renvoie un nombre négatif, 0. Un nombre positif indique que le premier paramètre est inférieur, égal ou supérieur au deuxième paramètre.
La méthode equals() nécessite un objet comme paramètre, qui est utilisé pour déterminer si le paramètre d'entrée est égal au comparateur. Cette méthode renvoie vrai uniquement si le paramètre d’entrée est également un comparateur et que le résultat du tri du paramètre d’entrée et du comparateur actuel est le même.
Quelle est la différence entre HashSet et TreeSet ?
HashSet est implémenté par une table de hachage, ses éléments ne sont donc pas ordonnés. La complexité temporelle des méthodes add(), remove() et contain() est O(1).
D'autre part, TreeSet est implémenté par une structure arborescente, et les éléments qu'elle contient sont ordonnés. Par conséquent, la complexité temporelle des méthodes add(), remove() et contain() est O(logn).
Quelle est la différence entre HashMap et ConcurrentHashMap ?
ConcurrentHashMap est une implémentation thread-safe de HashMap. Les principales différences sont les suivantes :
ConcurrentHashMap divise l'ensemble du tableau de compartiments en segments, puis utilise des verrous de verrouillage pour protéger chaque segment. Par rapport au verrouillage par mot-clé syn de Hashtable, la granularité est plus fine. mieux. HashMap n'a pas de mécanisme de verrouillage et n'est pas thread-safe.
Les paires clé-valeur de HashMap autorisent null, mais ConCurrentHashMap ne le permet pas
Après JDK8, ConcurrentHashMap permet une nouvelle façon d'implémentation, en utilisant l'algorithme CAS.
List, Set et Map héritent-ils de l'interface Collection ?
List et Set le sont, mais Map ne l'est pas. Map est un conteneur de mappage de paires clé-valeur, qui est évidemment différent de List et Set, stocke des éléments dispersés et n'autorise pas les éléments en double (il en va de même pour les ensembles en mathématiques). List est un conteneur avec une structure linéaire et est). adapté aux valeurs numériques. Accès par index aux éléments.
Nommez les performances de stockage et les fonctionnalités d'ArrayList, Vector et LinkedList ?
ArrayList et Vector utilisent tous deux des tableaux pour stocker des données. Le nombre d'éléments du tableau est plus grand que les données réellement stockées afin que des éléments puissent être ajoutés et insérés. Ils permettent tous deux d'indexer directement les éléments par des numéros de série, mais l'insertion d'éléments implique. les opérations de mémoire telles que le déplacement des éléments du tableau. , donc l'indexation des données est rapide mais l'insertion des données est lente. Étant donné que Vector utilise la méthode synchronisée (sécurité des threads), ses performances sont généralement pires que celles d'ArrayList.
LinkedList utilise une liste doublement chaînée pour implémenter le stockage (associant des unités de mémoire dispersées dans la mémoire via des références supplémentaires pour former une structure linéaire qui peut être indexée par numéro de série. Cette méthode de stockage en chaîne est cohérente avec la méthode de stockage continu Par rapport à (en fait, l'utilisation de la mémoire est plus élevée), l'indexation des données par numéro de série nécessite un parcours vers l'avant ou vers l'arrière, mais lors de l'insertion de données, il vous suffit d'enregistrer les éléments avant et après de cet élément, donc l'insertion. la vitesse est plus rapide.
Vector est un conteneur hérité (les conteneurs utilisés dans les premiers JDK, en plus de Hashtable, Dictionary, BitSet, Stack et Properties sont tous des conteneurs hérités, son utilisation n'est plus recommandée, mais parce qu'ArrayList et LinkedListed). les deux ne sont pas thread-safe. Si vous avez besoin de plusieurs threads pour faire fonctionner le même conteneur, vous pouvez utiliser la méthode SynchronizedList dans la classe d'outils Collections pour le convertir en un conteneur thread-safe avant de l'utiliser (c'est en fait le meilleur exemple de). le mode décoration, qui utilisera la méthode synchroniséList dans la classe outil Collections). L'objet est passé dans le constructeur d'une autre classe pour créer un nouvel objet pour ajouter de nouvelles fonctionnalités).
Quelles sont les caractéristiques de chacune des trois interfaces List, Map et Set lors du stockage des éléments ?
La liste est une collection ordonnée. Grâce à cette interface, vous pouvez contrôler avec précision la position d'insertion de chaque élément. Les utilisateurs peuvent accéder aux éléments d'une liste à l'aide d'un index (la position de l'élément dans la liste, similaire à un indice de tableau), similaire aux tableaux Java.
Set est une collection qui ne contient pas d'éléments en double, c'est-à-dire que deux éléments e1 et e2 ont e1.equals(e2)=false et Set a au plus un élément nul.
Interface Map : veuillez noter que Map n'hérite pas de l'interface Collection Map fournit un mappage clé-valeur
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

Spring Boot simplifie la création d'applications Java robustes, évolutives et prêtes à la production, révolutionnant le développement de Java. Son approche "Convention sur la configuration", inhérente à l'écosystème de ressort, minimise la configuration manuelle, allo
