Collection: Seuls les objets peuvent être stockés, les types d'objets peuvent être différents et la longueur peut être variable.
Interfaces et classes couramment utilisées:
1. Liste d'interface (ordonnant et reproductible): classe ArrayList, LinkedList, classe vectorielle
2. Définir l'interface (non ordonnée, ne peut pas être répétée): classe HashSet, classe d'arbres
3.
Traversion en boucle des classes de collecte
1. Ordinaire pour Loop: Tell pour (int i = 0; i <arr.size (); i ++) {…}
2. ForEach (amélioré pour Loop): comme pour (Objet I: arr) {…}
3. Iterator (iterator): par exemple, iterator it = arr.iterator (); while (it.hasnext ()) {objet o = it.next (); …}
Remarque: les tableaux ou collections ne peuvent pas être modifiés pendant la traversée, tandis que pour les boucles peuvent être modifiées pendant la traversée.
La différence entre ArrayList, LinkedList et Vector
ArrayList: Haute efficacité, principalement utilisée pour l'interrogation
Linkedlist: principalement utilisé pour l'insertion et la suppression
Vector: Fileth-Safe, principalement utilisé pour la requête
Code:
Importer java.util.arraylist; import java.util.iterator; import java.util.linkedlist; import java.util.list; import java.util.vector; public class listTest {public static void main (String [] args) {list arrayList = new ArrayList (); lister likedList = new LinkedList (); list vecteur = new Vector (); arrayList.add ("1"); // Type de caractères ArrayList.add ("1"); // répéter les éléments arrayList.add ("2"); arrayList.add (1); // Type de numéro LinkedList.add ("1"); LinkedList.add ("1"); LinkedList.add ("2"); LinkedList.Add (1); vector.add ("1"); vector.add ("1"); vector.add (2 "); vector.add (1); pour (objet obj: arrayList) {// pourach System.out.println (obj);} pour (int i = 0; i <linkedList.size (); i ++) {// ordinaire pour Loop System.out.println (arrayList.get (i));} iterator it = vector.iterator (); // iterator while (it.hasnext ()) {objet j = it.next (); system.out.println (j);}}}La différence entre le hashset et le Treeset
HashSet: HashSet est implémenté par une table de hachage. Les données dans le Hashset ne sont pas ordonnées. Vous pouvez mettre Null, mais vous ne pouvez mettre qu'un seul nul.
Treeset: Treeset est mis en œuvre par un arbre à deux différences. Les données dans Treeset sont automatiquement triées et les valeurs nulles ne peuvent pas être placées.
Code:
classe publique Settest {public static void main (String [] args) {set hashset = new hashset (); set arreseT = new TreeSet (); hashSet.add ("1"); // Type de caractères HashSet.add ("1"); // répéter l'élément hashset.add ("2"); hashset.add (1); // Type de numéro TreeSet.add ("1"); arreset.add ("1"); Treeset.add ("2"); //treeset.add(1); // Rapport Erreur, TreeSet ne peut pas ajouter différents types de données pour (objet I: HashSet) {// ForEach Loop System.out.println (i);} iterator it = arreset.iterator (); // iterator while (it.hasnext ()) {objet j = it.next (); system.out.println (j);}}}Remarque: l'interface définie n'a pas de méthode GET, vous ne pouvez donc pas utiliser une boucle normale pour traverser.
La différence entre hashmap, hashtable et treemap
Hashmap: hashmap permet une clé nul et plusieurs valeurs nulles
Hashable: la clé et la valeur du hashtable ne sont pas autorisées à être nuls
Treemap: il peut trier les enregistrements qu'il enregistre en fonction de la clé. Par défaut, il est trié par ordre croissant de valeurs clés. Vous pouvez également spécifier le comparateur trié. Lorsqu'il est traversé avec itérateur, les enregistrements obtenus sont triés.
Code:
Importer java.util.hashmap; importer java.util.hashTable; import java.util.iterator; import java.util.map; import java.util.set; import java.util.treemap; public classe Maptest {public static void Main (string [] args) {map hashmap = new hashmap (); mapable = newshtable = new HashTable (); map treeMap = new Treemap (); hashmap.put (1, "1"); // Valeur du type de caractères Hashmap.put (2, "1"); // la même valeur hashmap.put (3, "2"); hashmap.put (4, 1); // la valeur de type numérique hashmap.put ("5", 1); // le type de caractère key hashTable.put (1, "1"); hashTable.put (2, "1"); hashTable.put (3, "2"); hashTable.put (4, 1); hashTable.put ("5", 1); Treemap.put (1, "1"); Treemap.put (2, "1"); Treemap.put (5, "2"); Treemap.put (4, 1); 1); Treemap.put (1, "1"); Treemap.put (2, "1"); Treemap.put (5, "2"); Treemap.put (4, 1); // Treemap.put ("5", 1); // une erreur est signalée, Treemap ne peut pas ajouter différents types de touches // touche hashmap de transparent pour (clé d'objet: hashmap.keyset ()) {System.out.println (clé);} // Valeur de hashtable de transparent pour (valeur objet: hashTable.values ()) {System.out.println (valeur);} // transip hashmAP hashmap.KeySet (); pour (iterator iter = set.iterator (); iter.hasnext ();) {objet key = iter.next (); objet valeur = hashmap.get (key); system.out.println (key + "/ t" + value);} // itérativement transversal hashtable key-value paires, inverse ordre! ITERATOR TABLE = HashTable.EntrySet (). Iterator (); while (table.hasnext ()) {map.entry entrée = (map.entry) table.next (); Objet key = entry.getKey (); // obtient la valeur de l'objet clé = entrée.getValue (); // Obtenez le VACTION SYSTEM.out.println (clé + "/ t" + valeur); } // itérativement Traverse Treemap Key-Value paire iterator tmp = treeMap.EntrySet (). Iterator (); while (tmp.hasnext ()) {map.entry entrée = (map.entry) tmp.next (); Objet key = entry.getKey (); // obtient la valeur de l'objet clé = entrée.getValue (); // Obtenez le VACTION SYSTEM.out.println (clé + "/ t" + valeur); }}}Les cours sur la sécurité des threads comprennent: vecto, hashtabl, stringbuffe
Sécurité non-thread: ArrayList, LinkedList, Hashmap, Hashset, Treemap, Treeset, StringBulider
Remarque: ConcurrentHashMap peut être utilisé à la place du hashmap pour la sécurité des filetages et est plus efficace que le hashtable.
Le propre mécanisme de Java ne peut pas garantir pleinement la sécurité des filetages. Vous devez coder et le contrôler manuellement vous-même.