Maison  >  Article  >  Java  >  Collection de questions d'entretien Java classiques (8)

Collection de questions d'entretien Java classiques (8)

王林
王林avant
2020-07-16 17:11:472098parcourir

Collection de questions d'entretien Java classiques (8)

1. La différence entre Collection et Collections

(questions d'entretien plus connexes recommandées : questions d'entretien Java)

java.util.Collection est l'interface parent d'un framework 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 maximale pour diverses collections spécifiques.

java.util.Collections est une classe wrapper. Il contient diverses méthodes polymorphes statiques liées aux opérations de collecte. Cette classe ne peut pas être instanciée et ressemble à une classe utilitaire qui sert le framework Collection de Java. Il fournit une série de méthodes statiques pour implémenter des opérations telles que la recherche, le tri et la sécurité des threads sur diverses collections.

2. Les éléments de Set ne peuvent pas être répétés, alors comment distinguer s'ils sont répétés ou non ? Dois-je utiliser == ou equals() ? Quelle est la différence entre eux ?

== :

Type de base : la comparaison consiste à savoir si les valeurs sont les mêmes

Type de référence : la comparaison consiste à savoir si les valeurs d'adresse sont les mêmes

equals ():

Type de référence : par défaut, la valeur de l'adresse est comparée, qui peut être remplacée. La comparaison consiste à savoir si les valeurs des variables membres de l'objet sont. le même.

Si une classe ne définit pas sa propre méthode égale, sa méthode égale par défaut (héritée de la classe Object) utilise l'opérateur ==, qui compare également si les objets pointés par les deux variables sont le même objet . À ce stade, l'utilisation de equals obtiendra le même résultat que l'utilisation de == Si deux objets indépendants sont comparés, false sera toujours renvoyé.

Si la classe que vous écrivez espère comparer si le contenu de deux objets d'instance créés par la classe est le même, alors vous devez remplacer la méthode equals et écrire votre propre code pour décider dans quelles circonstances deux objets peuvent être considéré Le contenu est le même.

(Tutoriels associés recommandés : Tutoriel d'introduction à Java)

3. Quel est le rôle de

est utilisé ? pour parcourir les collections, les éléments ont des avantages par rapport à et pour chacun :

ne signalera pas d'exception en raison de la suppression de nœuds, et vous pouvez également l'implémenter avec votre propre structure de données.

4. Quelle est la différence entre HashSet et TreeSet, et quand les utiliser ?

Basique :

1. TreeSet est implémenté comme un arbre binaire. Les données dans Treeset sont automatiquement triées et les valeurs nulles ne sont pas autorisées.

2. HashSet est implémenté par une table de hachage. Les données dans HashSet ne sont pas ordonnées, mais vous ne pouvez mettre qu'une seule valeur nulle dans les deux, tout comme une base de données. .la seule contrainte.

3. HashSet nécessite que l'objet introduit implémente la méthode HashCode(). L'objet introduit est identifié par le code de hachage. Les objets String avec le même contenu ont le même hashcode, donc le contenu inséré. ne peut pas être répété. Mais les objets de la même classe peuvent être placés dans des instances différentes.

(Tutoriel vidéo recommandé : Tutoriel vidéo Java )

Complexité temporelle :

HashSet est implémenté par une table de hachage, par conséquent, les éléments sont non ordonné. La complexité temporelle des méthodes add(), remove() et contain() est O(1).

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

Lors de l'utilisation de TreeSet pour enregistrer des objets de classe personnalisés, la classe où se trouve la personnalisation doit implémenter l'interface Comparable. Si cette interface n'est pas implémentée, la relation de taille ne peut pas être distinguée, et si vous souhaitez trier dans le TreeSet, puis Pour comparer tous les champs, c'est-à-dire dans TreeSet, nous nous appuyons sur le fait que la méthode compare() renvoie 0 pour déterminer s'il existe des éléments en double.

TreeSet s'appuie sur Comparable pour distinguer les données en double ;

HashSet s'appuie sur hashCode() et equals() pour distinguer les données en double.

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