logo

34 Questions d'entretien sur les collections Java

En Java, les questions d'entretien de collecte sont les plus posées par les enquêteurs. Voici la liste des questions d'entretien sur les collections les plus posées avec leurs réponses.


1) Qu'est-ce que le framework Collection en Java ?

Collection Framework est une combinaison de classes et d’interfaces, utilisée pour stocker et manipuler les données sous forme d’objets. Il fournit diverses classes telles que ArrayList, Vector, Stack et HashSet, etc. et des interfaces telles que List, Queue, Set, etc. à cet effet.


2) Quelles sont les principales différences entre un tableau et une collection ?

Array et Collection sont quelque peu similaires en ce qui concerne le stockage des références d'objets et la manipulation des données, mais ils diffèrent à bien des égards. Les principales différences entre le tableau et la Collection sont définies ci-dessous :

  • Les tableaux sont toujours de taille fixe, c'est-à-dire qu'un utilisateur ne peut pas augmenter ou diminuer la longueur du tableau en fonction de ses besoins ou au moment de l'exécution, mais dans Collection, la taille peut être modifiée dynamiquement selon les besoins.
  • Les tableaux ne peuvent stocker que des objets de type homogène ou similaire, mais dans Collection, des objets hétérogènes peuvent être stockés.
  • Les tableaux ne peuvent pas fournir le « prêt à l'emploi » méthodes répondant aux besoins des utilisateurs telles que le tri, la recherche, etc. mais Collection inclut des méthodes prêtes à l'emploi à utiliser.

3) Expliquez les différentes interfaces utilisées dans le framework Collection ?

Le framework de collection implémente diverses interfaces, l'interface de collection et l'interface de carte (java.util.Map) sont les interfaces principalement utilisées de Java Collection Framework. La liste des interfaces de Collection Framework est donnée ci-dessous :

1. Interface de collecte : Collection (java.util.Collection) est l'interface principale et chaque collection doit implémenter cette interface.

Syntaxe:

 public interface Collectionextends Iterable 

Où représente que cette interface est de type générique

2. Interface de liste : L’interface List étend l’interface Collection et il s’agit d’une collection ordonnée d’objets. Il contient des éléments en double. Il permet également un accès aléatoire aux éléments.

Syntaxe:

 public interface List extends Collection 

3. Définir l'interface : L'interface Set (java.util.Set) est une collection qui ne peut pas contenir d'éléments en double. Il ne peut inclure que les méthodes héritées de l'interface Collection

Syntaxe:

 public interface Set extends Collection 

Interface de file d'attente : L'interface Queue (java.util.Queue) définit la structure des données de file d'attente, qui stocke les éléments sous la forme FIFO (premier entré, premier sorti).

Syntaxe:

 public interface Queue extends Collection 

4. Interface de suppression de la file d'attente : c'est une file d'attente à double extrémité. Il permet l'insertion et le retrait d'éléments des deux côtés. Il implante les propriétés de la pile et de la file d'attente afin de pouvoir effectuer des opérations de pile LIFO (dernier entré, premier sorti) et de file d'attente FIFO (premier entré, premier sorti).

Syntaxe:

 public interface Dequeue extends Queue 

5. Interface cartographique : Une carte (java.util.Map) représente un stockage d'éléments par paire clé et valeur. L’interface Map n’implémente pas l’interface Collection. Il ne peut contenir qu'une clé unique mais peut contenir des éléments en double. Il existe deux interfaces qui implémentent Map en Java : l'interface Map et Sorted Map.

qu'est-ce que l'uri

4) Quelle est la différence entre ArrayList et Vector ?

Non.Liste des tableauxVecteur
1)ArrayList n'est pas synchronisé.Le vecteur est synchronisé.
2)ArrayList n'est pas une classe héritée.Vector est une classe héritée.
3)ArrayList augmente sa taille de 50 % de la taille du tableau.Vector augmente sa taille en doublant la taille du tableau.
4)ArrayList n'est pas ?thread-safe ? car il n'est pas synchronisé.La liste de vecteurs est ?thread-safe ? car chaque méthode est synchronisée.

5) Quelle est la différence entre ArrayList et LinkedList ?

Non.Liste des tableauxListe liée
1)ArrayList utilise un tableau dynamique.LinkedList utilise une liste doublement chaînée.
2)ArrayList n'est pas efficace pour la manipulation car il en faut trop.LinkedList est efficace pour la manipulation.
3)ArrayList est préférable pour stocker et récupérer des données.LinkedList est préférable pour manipuler les données.
4)ArrayList fournit un accès aléatoire.LinkedList ne fournit pas d'accès aléatoire.
5)ArrayList consomme moins de mémoire car il stocke uniquement les objetsLinkedList nécessite plus de mémoire, car il stocke l'objet ainsi que l'adresse de cet objet.

6) Quelle est la différence entre Iterator et ListIterator ?

Iterator parcourt les éléments dans le sens avant uniquement, tandis que ListIterator parcourt les éléments dans le sens avant et arrière.

Non.ItérateurListItérateur
1)L'itérateur parcourt les éléments dans le sens avant uniquement.ListIterator parcourt les éléments vers l'arrière et vers l'avant.
2)L'itérateur peut être utilisé dans List, Set et Queue.ListIterator ne peut être utilisé que dans List.
3)L'itérateur ne peut effectuer une opération de suppression que lors du parcours de la collection.ListIterator peut effectuer ?add,? ?retirer,? Et mettre? opération tout en parcourant la collection.

7) Quelle est la différence entre itérateur et énumération ?

Non.ItérateurÉnumération
1)L'itérateur peut parcourir des éléments hérités et non hérités.L'énumération ne peut parcourir que les éléments hérités.
2)L’Iterator est rapide en cas d’échec.L’énumération n’est pas une tâche rapide.
3)L'itérateur est plus lent que l'énumération.L'énumération est plus rapide que Iterator.
4)L'itérateur peut effectuer une opération de suppression lors du parcours de la collection.L'énumération ne peut effectuer qu'une opération de traversée sur la collection.

8) Quelle est la différence entre List et Set ?

List et Set étendent tous deux l’interface de collection. Il existe cependant quelques différences entre les deux, répertoriées ci-dessous.

  • La liste peut contenir des éléments en double alors que Set comprend des éléments uniques.
  • La List est une collection ordonnée qui conserve l'ordre d'insertion tandis que Set est une collection non ordonnée qui ne préserve pas l'ordre d'insertion.
  • L'interface List contient une seule classe héritée qui est la classe Vector alors que l'interface Set n'a aucune classe héritée.
  • L'interface List peut autoriser n nombre de valeurs nulles alors que l'interface Set n'autorise qu'une seule valeur nulle.

9) Quelle est la différence entre HashSet et TreeSet ?

HashSet et TreeSet, deux classes, implémentent l'interface Set. Les différences entre les deux sont répertoriées ci-dessous.

  • HashSet ne maintient aucun ordre alors que TreeSet maintient un ordre croissant.
  • HashSet imposé par une table de hachage alors que TreeSet implémenté par une structure arborescente.
  • HashSet fonctionne plus rapidement que TreeSet.
  • HashSet est soutenu par HashMap tandis que TreeSet est soutenu par TreeMap.

10) Quelle est la différence entre Set et Map ?

Les différences entre l'ensemble et la carte sont indiquées ci-dessous.

  • Set contient uniquement des valeurs alors que Map contient à la fois la clé et les valeurs.
  • Set contient des valeurs uniques tandis que Map peut contenir des clés uniques avec des valeurs en double.
  • Set contient un seul nombre de valeurs nulles tandis que Map peut inclure une seule clé nulle avec un nombre n de valeurs nulles.

11) Quelle est la différence entre HashSet et HashMap ?

Les différences entre HashSet et HashMap sont répertoriées ci-dessous.

  • HashSet contient uniquement des valeurs alors que HashMap inclut l'entrée (clé, valeur). HashSet peut être itéré, mais HashMap doit être converti en Set pour être itéré.
  • HashSet implémente l'interface Set tandis que HashMap implémente l'interface Map
  • HashSet ne peut pas avoir de valeur en double alors que HashMap peut contenir des valeurs en double avec des clés uniques.
  • HashSet contient le seul nombre de valeurs nulles alors que HashMap peut contenir une seule clé nulle avec n nombre de valeurs nulles.

12) Quelle est la différence entre HashMap et TreeMap ?

Les différences entre HashMap et TreeMap sont indiquées ci-dessous.

  • HashMap ne maintient aucun ordre, mais TreeMap maintient un ordre croissant.
  • HashMap est implémenté par une table de hachage tandis que TreeMap est implémenté par une structure arborescente.
  • HashMap peut être trié par clé ou valeur tandis que TreeMap peut être trié par clé.
  • HashMap peut contenir une clé nulle avec plusieurs valeurs nulles alors que TreeMap ne peut pas contenir de clé nulle mais peut avoir plusieurs valeurs nulles.

13) Quelle est la différence entre HashMap et Hashtable ?

Non.Carte de hachageTable de hachage
1)HashMap n'est pas synchronisé.La table de hachage est synchronisée.
2)HashMap peut contenir une clé nulle et plusieurs valeurs nulles.La table de hachage ne peut contenir aucune clé nulle ou valeur nulle.
3)HashMap n'est pas « thread-safe » il est donc utile pour les applications non threadées.Hashtable est thread-safe et peut être partagé entre différents threads.
4)4) HashMap hérite de la classe AbstractMapHashtable hérite de la classe Dictionary.

14) Quelle est la différence entre Collection et Collections ?

Les différences entre la Collection et les Collections sont indiquées ci-dessous.

  • La Collection est une interface alors que Collections est une classe.
  • L'interface Collection fournit les fonctionnalités standard de structure de données pour List, Set et Queue. Cependant, la classe Collections consiste à trier et synchroniser les éléments de la collection.
  • L'interface Collection fournit les méthodes qui peuvent être utilisées pour la structure des données, tandis que la classe Collections fournit les méthodes statiques qui peuvent être utilisées pour diverses opérations sur une collection.

15) Quelle est la différence entre Comparable et Comparateur ?

Non.ComparableComparateur
1)Comparable ne fournit qu’un seul type de séquence.Le comparateur propose plusieurs types de séquences.
2)Il fournit une méthode nommée compareTo().Il fournit une méthode nommée compare().
3)Il se trouve dans le package java.lang.Il se trouve dans le package java.util.
4)Si nous implémentons l'interface Comparable, la classe réelle est modifiée.La classe réelle n'est pas modifiée.

16) Qu’entendez-vous par BlockingQueue ?

BlockingQueue est une interface qui étend l'interface Queue. Il assure la concurrence dans les opérations telles que la récupération, l'insertion et la suppression. Lors de la récupération d'un élément, il attend que la file d'attente ne soit pas vide. Lors du stockage des éléments, il attend l'espace disponible. BlockingQueue ne peut pas contenir d'éléments nuls et l'implémentation de BlockingQueue est thread-safe.

Syntaxe:

 public interface BlockingQueue extends Queue 

17) Quel est l'avantage du fichier Propriétés ?

Si vous modifiez la valeur dans le fichier de propriétés, vous n'avez pas besoin de recompiler la classe Java. Cela rend donc l’application facile à gérer. Il est utilisé pour stocker des informations qui doivent être modifiées fréquemment. Considérez l'exemple suivant.

 import java.util.*; import java.io.*; public class Test { public static void main(String[] args)throws Exception{ FileReader reader=new FileReader('db.properties'); Properties p=new Properties(); p.load(reader); System.out.println(p.getProperty('user')); System.out.println(p.getProperty('password')); } } 

Sortir

 system oracle 

18) À quoi sert la méthode hashCode() ?

La méthode hashCode() renvoie une valeur de code de hachage (un nombre entier).

La méthode hashCode() renvoie le même nombre entier si deux clés (en appelant la méthode equals()) sont identiques.

Cependant, il est possible que deux numéros de code de hachage aient des clés différentes ou identiques.

Si deux objets ne produisent pas un résultat égal en utilisant la méthode equals(), alors la méthode hashcode() fournira un résultat entier différent pour les deux objets.


19) Pourquoi remplaçons-nous la méthode equals() ?

La méthode égale est utilisée pour vérifier si deux objets sont identiques ou non. Il doit être remplacé si nous voulons vérifier les objets en fonction de la propriété.

Par exemple, Employee est une classe qui comporte 3 données membres : identifiant, nom et salaire. Cependant, nous souhaitons vérifier l'égalité de l'objet salarié par le salaire. Ensuite, nous devons remplacer la méthode equals().


20) Comment synchroniser les éléments List, Set et Map ?

Oui, la classe Collections fournit des méthodes pour synchroniser les éléments List, Set ou Map :

Liste statique publique synchroniséeListe (Liste l){}
public static Set synchroniséSet(Set s){}
public statique SortedSet synchroniséSortedSet (SortedSet s){}
Carte statique publique synchroniséeMap(Carte m){}
public statique SortedMap synchroniséSortedMap(SortedMap m){}

21) Quel est l'avantage de la collection générique ?

L’utilisation de la collection générique présente trois avantages principaux.

chaîne java avec format
  • Si nous utilisons la classe générique, nous n’avons pas besoin de transtypage.
  • Il est de type sécurisé et vérifié au moment de la compilation.
  • Generic confirme la stabilité du code en le rendant détectable au moment de la compilation.

22) Qu'est-ce que la collision de hachage dans Hashtable et comment est-elle gérée en Java ?

Deux clés différentes avec la même valeur de hachage sont appelées collision de hachage. Deux entrées distinctes seront conservées dans un seul seau de hachage pour éviter la collision. Il existe deux manières d'éviter les collisions de hachage.

  • Chaînage séparé
  • Adressage ouvert

23) Qu'est-ce que la classe Dictionnaire ?

La classe Dictionary offre la possibilité de stocker des paires clé-valeur.


24) Quelle est la taille par défaut du facteur de charge dans la collection basée sur le hachage ?

La taille par défaut du facteur de charge est 0,75 . La capacité par défaut est calculée comme étant la capacité initiale x le facteur de charge. Par exemple, 16 * 0,75 = 12. Ainsi, 12 est la capacité par défaut de Map.


25) Qu’entendez-vous par fail-fast ?

L'itérateur en Java qui lève immédiatement ConcurrentmodificationException, si une modification structurelle se produit, est appelé en tant qu'itérateur Fail-fast. L’itérateur Fail-fats ne nécessite aucun espace supplémentaire en mémoire.


26) Quelle est la différence entre Array et ArrayList ?

Les principales différences entre Array et ArrayList sont indiquées ci-dessous.

SNTableauListe des tableaux
1Le tableau est de taille fixe, ce qui signifie que nous ne pouvons pas redimensionner le tableau selon les besoins.ArrayList n'est pas de taille fixe, nous pouvons modifier la taille de manière dynamique.
2Les tableaux sont de type statique.ArrayList est de taille dynamique.
3Les tableaux peuvent stocker des types de données primitifs ainsi que des objets.ArrayList ne peut pas stocker les types de données primitifs, il ne peut stocker que les objets.

27) Quelle est la différence entre la longueur d'un tableau et la taille d'une ArrayList ?

La longueur d'un tableau peut être obtenue en utilisant la propriété length alors qu'ArrayList ne prend pas en charge la propriété length, mais nous pouvons utiliser la méthode size() pour obtenir le nombre d'objets dans la liste.

Trouver la longueur du tableau

 Int [] array = new int[4]; System.out.println('The size of the array is ' + array.length); 

Trouver la taille de l'ArrayList

 ArrayList list=new ArrayList(); list.add('ankit');�� list.add('nippun'); System.out.println(list.size()); 

28) Comment convertir ArrayList en Array et Array en ArrayList ?

Nous pouvons convertir un Array en ArrayList en utilisant la méthode asList() de la classe Arrays. La méthode asList() est la méthode statique de la classe Arrays et accepte l’objet List. Considérez la syntaxe suivante :

 Arrays.asList(item) 

Nous pouvons convertir un ArrayList en Array en utilisant la méthode toArray() de la classe ArrayList. Considérez la syntaxe suivante pour convertir ArrayList en objet List.

 List_object.toArray(new�String[List_object.size()]) 

29) Comment rendre Java ArrayList en lecture seule ?

Nous pouvons obtenir Java ArrayList en lecture seule en appelant la méthode Collections.unmodifiableCollection(). Lorsque nous définissons une ArrayList en lecture seule, nous ne pouvons effectuer aucune modification dans la collection via les méthodes �add(), remove() ou set().


30) Comment supprimer les doublons d’ArrayList ?

Il existe deux manières de supprimer les doublons de ArrayList.

    Utilisation de HashSet :En utilisant HashSet, nous pouvons supprimer l'élément en double de ArrayList, mais cela ne conservera pas alors l'ordre d'insertion.Utilisation de LinkedHashSet :Nous pouvons également conserver l'ordre d'insertion en utilisant LinkedHashSet au lieu de HashSet.

Le processus pour supprimer les éléments en double d'ArrayList à l'aide de LinkedHashSet :

  • Copiez tous les éléments de ArrayList dans LinkedHashSet.
  • Videz ArrayList à l’aide de la méthode clear(), qui supprimera tous les éléments de la liste.
  • Copiez maintenant tous les éléments de LinkedHashset dans ArrayList.

31) Comment inverser ArrayList ?

Pour inverser une ArrayList, nous pouvons utiliser la méthode reverse() de la classe Collections. Considérez l'exemple suivant.

 import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Iterator i2 = list.iterator(); Collections.reverse(list); System.out.println('printing list in reverse order....'); while(i2.hasNext()) { System.out.println(i2.next()); } } } 

Sortir

 printing the list.... 10 50 30 printing list in reverse order.... 30 50 10 

32) Comment trier ArrayList par ordre décroissant ?

Pour trier l'ArrayList par ordre décroissant, nous pouvons utiliser la méthode reverseOrder de la classe Collections. Considérez l'exemple suivant.

 import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); list.add(60); list.add(20); list.add(90); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Comparator cmp = Collections.reverseOrder(); Collections.sort(list,cmp); System.out.println('printing list in descending order....'); Iterator i2 = list.iterator(); while(i2.hasNext()) { System.out.println(i2.next()); } } } 

Sortir

printemps mvc
 printing the list.... 10 50 30 60 20 90 printing list in descending order.... 90 60 50 30 20 10 

33) Comment synchroniser ArrayList ?

Nous pouvons synchroniser ArrayList de deux manières.

  • Utilisation de la méthode Collections.synchronizedList()
  • Utilisation de CopyOnWriteArrayList

3.4) Quand utiliser ArrayList et LinkedList ?

Il est préférable d'utiliser les LinkedLists pour les opérations de mise à jour, tandis que les ArrayLists sont préférables pour les opérations de recherche.