Koleksi: Hanya objek yang dapat disimpan, tipe objek dapat berbeda dan panjangnya dapat bervariasi.
Antarmuka dan kelas yang umum digunakan:
1. Daftar antarmuka (tertib dan berulang): kelas arraylist, linkedlist, kelas vektor
2. Atur Antarmuka (tidak berurutan, tidak dapat diulang): HashSet Class, Treeset Class
3. Antarmuka peta (pasangan nilai kunci, hanya kunci, nilai tidak unik): kelas hashmap, kelas hashtable, kelas treemap
Loop Traversal of Collection Class
1. Loop biasa: seperti untuk (int i = 0; i <arr.size (); i ++) {...}
2. Foreach (ditingkatkan untuk loop): seperti untuk (objek i: arr) {...}
3. Iterator (iterator): misalnya, iterator it = arr.iterator (); while (it.hasnext ()) {objek o = it.next (); …}
Catatan: Array atau koleksi tidak dapat dimodifikasi selama traversal, sedangkan untuk loop dapat dimodifikasi selama traversal.
Perbedaan antara ArrayList, LinkedList dan Vector
ArrayList: Efisiensi Tinggi, sebagian besar digunakan untuk permintaan
LinkedList: Sebagian besar digunakan untuk penyisipan dan penghapusan
Vektor: Thread-Safe, sebagian besar digunakan untuk meminta
Kode:
import 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();List linkedList=new LinkedList();List vector=new Vektor (); arraylist.add ("1"); // tipe karakter arraylist.add ("1"); // ulangi elemen arraylist.add ("2"); arraylist.add (1); // Jenis Nomor LinkedList.Add ("1"); LinkedList.Add ("1"); LinkedList.Add ("2"); LinkedList.Add (1); Vector.Add ("1"); Vector.Add ("1"); Vector.Add ("2"); vector.add (1); System.out.println (obj);} untuk (int i = 0; i <linkedlist.size (); i ++) {// biasa untuk loop system.out.println (arraylist.get (i));} iterator it = vector.iterator (); // iterator while (it.hasnext ()) {objek j = it.next (); System.out.println (j);}}}Perbedaan antara hashset dan treeset
Hashset: Hashset diimplementasikan oleh tabel hash. Data dalam hashset tidak berurutan. Anda dapat menempatkan nol, tetapi Anda hanya bisa menempatkan satu nol.
Treeeset: Treeset dilaksanakan oleh pohon dua perbedaan. Data di Treeset secara otomatis diurutkan dan nilai nol tidak diizinkan untuk ditempatkan.
Kode:
Public Class Settest {public static void main (string [] args) {set hashset = new hashset (); set treeset = new treeset (); hashset.add ("1"); // tipe karakter hashset.add ("1"); // ulangi elemen hashset.add ("2"); hashset.add (1); // Jenis Nomor Treeeset.Add ("1"); Treeeset.add ("1"); Treeeset.add ("2"); //treeset.add(1); // Laporkan kesalahan, TreeSet tidak dapat menambahkan tipe data yang berbeda untuk (objek I: hashSet) {// foreach loop system.out.println (i);} iterator it = Treeeset.iterator (); // iterator while (it.hasnext ()) {objek j = it.next (); System.out.println (j);}}}Catatan: Antarmuka yang ditetapkan tidak memiliki metode GET, jadi Anda tidak dapat menggunakan normal untuk melintasi loop.
Perbedaan antara hashmap, hashtable dan treemap
HashMap: HashMap memungkinkan satu kunci nol dan beberapa nilai nol
Hashtable: Kunci dan nilai hashtable tidak diizinkan menjadi nol
TreeMap: Ini dapat mengurutkan catatan yang disimpannya sesuai dengan kunci. Secara default, itu diurutkan dalam urutan menaik dari nilai -nilai kunci. Anda juga dapat menentukan pembanding yang diurutkan. Ketika dilintasi dengan iterator, catatan yang diperoleh diurutkan.
Kode:
Impor java.util.hashmap; impor java.util.hashtable; import java.util.iterator; impor java.util.map; java.util.set; import java.util.treemap; public maptest {public static main (string [] args) {pape hashmap = public static Main Main (string [] args) {mapmap publ hashmap = public static Main Main (string [] args) {mapMap hashmap = public static Main Main (string [] args) {mapMap hashmap = public static Main Main (string [] args) {mapMap public hashmap = public void Main Main (string [] args) {mapMap publ Hashtable (); peta treemap = new treemap (); hashmap.put (1, "1"); // Jenis Karakter Nilai hashmap.put (2, "1"); // nilai yang sama hashmap.put (3, "2"); hashmap.put (4, 1); // nilai tipe numerik hashmap.put ("5", 1); // Kunci tipe karakter 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"); 1); treemap.put (1, "1"); treemap.put (2, "1"); treemap.put (5, "2"); treemap.put (4, 1); // treemap.put ("5", 1); // Kesalahan dilaporkan, TreeMap tidak dapat menambahkan berbagai jenis kunci // tombol HashMap TransiP untuk (tombol objek: hashmap.keyset ()) {System.out.println (key);} // Nilai Hashtable TransiP (nilai objek: hashtable. hashmap.keyset (); untuk (iterator iter = set.iterator (); iter.hasnext ();) {objek key = iter.next (); nilai objek = hashmap.get (key); System.out.println (key+"/t"+Nilai);} // secara iteratif melintasi pasang kunci helasan helasan, revere, reverse! Iterator Table = hashtable.entryset (). Iterator (); while (table.hasnext ()) {map.entry entri = (map.entry) table.next (); Tombol objek = entri.getKey (); // Dapatkan nilai objek kunci = entri.getValue (); // Dapatkan nilai System.out.println (Key+"/T"+Value); } // secara iteratif melintasi treemap key-value pair iterator tmp = treemap.entryset (). Iterator (); while (tmp.hasnext ()) {map.entry entri = (map.entry) tmp.next (); Tombol objek = entri.getKey (); // Dapatkan nilai objek kunci = entri.getValue (); // Dapatkan nilai System.out.println (Key+"/T"+Value); }}}Kelas tentang keamanan utas meliputi: vecto, hashtabl, stringbuffe
Keselamatan non-utas: ArrayList, LinkedList, HashMap, Hashset, TreeMap, Treeeset, StringBulider
CATATAN: ConcurrenthashMap dapat digunakan sebagai pengganti hashmap untuk keamanan utas dan lebih efisien daripada hashtable.
Mekanisme Java sendiri tidak dapat sepenuhnya menjamin keamanan utas. Anda perlu mengkode secara manual dan mengendalikannya sendiri.