Cet article est le premier article signé par la communauté Nuggets. La réimpression est interdite dans les 14 jours. La réimpression est interdite sans autorisation après 14 jours. L'infraction doit faire l'objet d'une enquête !
avant-propos
Lorsque nous avons parlé des types de données de Java, nous avons introduit les tableaux séparément. Les tableaux sont en effet l'un des types de mémoire couramment utilisés dans les programmes de développement. Cependant, les tableaux intégrés à Java ont de nombreuses restrictions, de sorte que la structure de List a été étendue Semblables à Set, Queue, ces conteneurs en mémoire sont placés sous la famille de classes Collection, plus un autre représentant de la famille de classes Map de structure de données couramment utilisée, qui constituent ensemble l'ensemble du système du framework de collecte en Java.
Tous les éléments ci-dessus sont des conteneurs synchrones, qui sont thread-safe. Plus tard, Java a introduit des conteneurs concurrents, mais ces contenus appartiennent à JUC, et nous les traiterons lorsque nous parlerons du chapitre sur la concurrence. Le contenu de cet article est théorique. Il y aura trois sections plus loin sur l'utilisation de List, Set et Map et un résumé de leurs opérations communes pour améliorer l'efficacité du développement. Le plan de cet article est le suivant :
Une introduction au cadre de collecte
Le framework de collections de Java se compose de deux grandes familles, Collection et Map.
Comme son nom l'indique, une collection représente un groupe d'objets. Le Java Collections Framework se compose d'un ensemble d'interfaces et de classes qui facilitent le travail avec différents types de collections, telles que List, Set, Map, Stack et Queue, entre autres.
Lorsque nous devons traiter des collections d'objets homogènes et hétérogènes, Java fournit des classes de collection prêtes à l'emploi qui résolvent de nombreux problèmes très courants. Les opérations courantes impliquent l'ajout, la suppression, la mise à jour, le tri, la recherche et des algorithmes plus complexes, et ces classes de collection fournissent un support très transparent pour toutes ces opérations à l'aide de l'API Collections.
La figure suivante est une vue d'ensemble architecturale de l'infrastructure des collections
Ce diagramme montre généralement chaque interface, classe abstraite et classe concrète du framework de collection.Au début, ce sera éblouissant et je ne sais pas comment regarder.
Présentation de l'interface de base du cadre de collecte
En combinant d'abord les interfaces principales, vous pouvez mieux comprendre le framework de collection. Toutes les classes de collection fournissent des fonctions spécifiques en implémentant ces interfaces.
Le diagramme suivant montre les principales interfaces dans le cadre des collections
Les interfaces principales incluent principalement Collection et Map. Collection représente une collection qui stocke des objets, tandis que Map représente une table de mappage qui stocke des paires clé-valeur.
Le recueil
Collection 接口是层次结构的根接口。 Collection 接口定义了具体集合类必须支持的所有通用方法(或抛出 UnsupportedOperationException)。它扩展了 Iterable 接口,增加了对使用“for-each loop”语句迭代集合元素的支持。
Collection interface 定义的方法如下,都是关于集合的通用方法
所有其他集合接口和类(Map 除外)都扩展或实现了Collection interface。例如,List、 Set 接口都继承了 Collection Interface。
List
List 表示元素的有序集合。使用列表,我们可以通过它们的整数索引(列表中的位置)访问元素,并在列表中搜索元素。跟数组一样,列表的索引从 0 开始。 Java 中最常用的 List 实现类,是 – ArrayList、CopyOnWriteArrayList、LinkedList、Stack 和 Vector。
Set
Set 表示无重复元素的集合, Set 接口不保证以任何可预测的顺序返回元素,其子接口 SortedSet 提供元素以自然顺序排序或者以创建时提供的 Comparator 排序元素的能力。
Queue
Queue 接口表示队列这种数据结构,队列旨在将元素插入队列的末尾,并从队列的开头删除元素。这类似于超市中排队的工作方式。
Deque
L'interface Deque représente un deque, ce qui signifie que des éléments peuvent être ajoutés et supprimés aux deux extrémités de la file d'attente. Le nom Deque est l'abréviation de file d'attente à double extrémité. Le mot Deque se prononce "jeu" - comme le "jeu" d'un jeu de cartes. Étant donné que vous pouvez mettre en file d'attente et retirer la file d'attente des deux extrémités d'un Java Deque, vous pouvez utiliser Deques comme files d'attente et piles. L'interface Deque étend l'interface Queue, de sorte que vous pouvez utiliser toutes les méthodes de l'interface Queue lors de l'utilisation de Deque. L'interface Deque n'étend pas l'interface Java Stack, mais l'interface Deque définit des méthodes qui nous permettent d'effectuer des opérations qui sont normalement effectuées sur la pile (push, peek, pop).
Carte
L'interface Map nous permet de stocker des données dans des paires clé-valeur (les clés sont immuables). La carte ne peut pas contenir de clés en double, chaque clé ne peut être mappée qu'à une seule valeur. L'interface Map fournit trois vues de collection qui permettent d'afficher le contenu d'une Map sous la forme d'un ensemble de clés, d'un ensemble de valeurs ou d'un ensemble de mappages clé-valeur. Certaines classes d'implémentation Map, telles que la classe TreeMap, offrent des garanties spécifiques sur leur ordre, d'autres, telles que la classe HashMap, n'ont aucune garantie d'ordre.
Carte triée
L'interface SortedMap est une extension de l'interface Map et représente une Map dont les clés sont triées. Par conséquent, les clés stockées dans une SortedMap peuvent être itérées dans un ordre trié, plutôt que dans l'ordre aléatoire dans lequel elles sont itérées dans une Map normale. La classe TreeMap mentionnée ci-dessus est l'implémentation de l'interface SortedMap.
Résumer
Voici juste une introduction à l'architecture et aux interfaces de base de Java Collections Framework. Faites-nous savoir quelles interfaces sont fournies dans Collections Framework et leurs principales classes d'implémentation, afin de fournir une orientation pour l'apprentissage ultérieur. Nous en apprendrons plus sur chaque interface en détail plus tard. Ils sont souvent utilisés dans la classe d'implémentation.