(I) Collection et collections
Les deux sont situés sous le package Java.util, la différence est:
La collection est une interface de collection, avec des sous-interfaces communes telles que ListSet, et est le premier nœud du graphique du framework de collection. Il fournit une série de méthodes pour effectuer des opérations de base sur les objets de collecte.
Les méthodes courantes sont:
booléen ajouter (e e) ajouter des éléments au conteneur; int size () renvoie le nombre d'éléments de la collection; Boolean iSempty () détermine si le conteneur est vide; Boolean contient (objet O) Si cette collection contient l'élément spécifié, il renvoie true et que la méthode equals () sera utilisée ici; Booléen Retire (objet O) supprime l'instance de l'élément spécifié; etc.
Collections est une classe de wrapper qui contient diverses méthodes polymorphes statiques pour les opérations de collecte, qui contient des algorithmes polymorphes opérés sur la collection, c'est-à-dire "Wrapper", qui renvoie une nouvelle collection soutenue par la collection spécifiée, et quelques autres choses.
Les méthodes courantes sont:
VOID SORT (LIST) Trie le contenu de la liste.
Il convient de noter ici que (PS: L'explication suivante sur Sort () est extraite à partir d' une brève discussion sur les principes de tri des objets ou de tri et de collections .
Le corps de tri dans cette fonction SORT () est Arrays.Sort ().
@SuppressWarnings ("non contrôlé") public statique <T étend comparable <? super t >> void tri (list <t> list) {object [] array = list.toArray (); Arrays.sort (tableau); int i = 0; ListIterator <t> it = list.ListIterator (); while (it.hasnext ()) {it.next (); it.set ((t) array [i ++]); }} Dans arrays.sort (), on peut voir qu'il est implémenté via comparableTiMsort.sort (objet [] a): public static void tri (objet [] array) {// begin Android-Changed ComparableTeMSort.sort (array); // terminer Android-Changed} STATIC VOID SORT (Object [] A) To static void Sort (Object [] A, int lo, int Hi) To Private Static void binarySort (Object [] A, int lo, int hi, int start). Dans BinarySort, la pièce utilisée pour la comparaison des tailles est: Comparable <objet> pivot = (comparable) a [start]; int Left = lo; int droit = start; affirmer à gauche <= à droite; while (gauche <droite) {int mid = (gauche + droit) >>> 1; if (pivot.compareto (a [mid]) <0) droit = mid; else gauche = mid + 1; }La seule méthode de l'interface comparable est utilisée dans la recherche binaire: compareto (). Si toutes les classes personnalisées sont chargées dans le conteneur et doivent être comparées, vous devez implémenter l'interface comparable ou hériter de la classe de comparaison et remplacer la méthode compareto ().
int binararysearch (List Object) Pour les conteneurs de liste séquentiels, la méthode de demi-recherche est utilisée pour trouver l'objet spécifié; Void Reverse (List) organise les objets dans le conteneur de liste dans l'ordre inverse; etc.
(Ii) itérateur et itérable
Tout d'abord, l'itable est situé sous le package java.lang, et l'itérateur est situé sous le package java.util. Dans le cadre de collection, trois méthodes sont définies dans l'interface Iterator: booléen hasnext (); e next (); void retirait (). ITable définit une seule méthode: Iterator (), la valeur de retour est un objet qui implémente l'interface Iterator. La collection hérite de la super interface de ITable, de sorte que toutes les classes d'implémentation du cadre de collection ont la méthode Iterator (), et le polymorphisme permet à la référence d'Iterator d'accéder à la pièce (c'est-à-dire ces trois méthodes) dans la collection actuelle qui implémente Iterator. Si vous avez besoin de supprimer des éléments pour le moment, puisque Iterator termine le verrouillage sur cette opération de collection, vous ne pouvez utiliser la méthode Supble () de l'itérateur pendant la traversée de la boucle avec Iterator et ne peut pas utiliser la méthode Suppor (Object) de la collection.
Alors pourquoi devons-nous implémenter l'interface itérable? Pourquoi ne pas implémenter directement l'interface itérateur? De cette façon, la classe de collecte peut hériter directement de ces trois méthodes?
Jetez un œil aux classes de collecte dans JDK, comme la famille List ou la famille Set, qui implémente l'interface itérable, mais n'implémentez pas directement l'interface Iterator.
Pensez attentivement et ayez un sens.
Parce que les méthodes principales de l'interface itératrice next () ou hasnext () dépendent de la position d'itération actuelle de l'itérateur.
Si la collection implémente directement l'interface Itérator, elle conduira inévitablement à l'objet de collecte contenant les données (pointeur) de la position d'itération actuelle.
Lorsqu'une collection est transmise entre différentes méthodes, car la position d'itération actuelle n'est pas prédéfinie, le résultat de la méthode suivante () devient imprévisible.
Sauf si une méthode reset () est ajoutée à l'interface Iterator pour réinitialiser la position d'itération actuelle.
Mais dans ce cas, la collection ne peut avoir qu'un seul emplacement d'itération actuel en même temps.
Itérable n'est pas le cas, et chaque appel renvoie un itérateur comptant à partir de zéro.
Plusieurs itérateurs n'interfèrent pas les uns avec les autres.
L'article ci-dessus est basé sur des points de connaissance déroutants (explication détaillée) dans la collection Java. J'espère que cela pourra vous donner une référence et j'espère que vous pourrez soutenir Wulin.com plus.