คอลเลกชัน: เท่านั้นที่สามารถจัดเก็บวัตถุประเภทวัตถุอาจแตกต่างกันและความยาวสามารถเป็นตัวแปร
อินเทอร์เฟซและคลาสที่ใช้กันทั่วไป:
1. รายการอินเทอร์เฟซ (เป็นระเบียบและทำซ้ำได้): คลาส arraylist, linkedList, คลาสเวกเตอร์
2. ชุดอินเทอร์เฟซ (ไม่ได้เรียงลำดับไม่สามารถทำซ้ำได้): คลาส HashSet, คลาส Treeset
3. อินเตอร์เฟสแผนที่ (คู่คีย์-ค่า, คีย์เท่านั้น, ค่าไม่เป็นเอกลักษณ์): คลาส hashmap, คลาสแฮชเทบ
วนรอบการสำรวจของคลาสคอลเลกชัน
1. สามัญสำหรับลูป: เช่น (int i = 0; i <arr.size (); i ++) {…}
2. foreach (ปรับปรุงสำหรับลูป): เช่นสำหรับ (วัตถุ I: arr) {…}
3. ตัววนซ้ำ (ตัววนซ้ำ): ตัวอย่างเช่นตัววนซ้ำมัน = arr.iterator (); ในขณะที่ (it.hasnext ()) {object o = it.next (); -
หมายเหตุ: อาร์เรย์หรือคอลเลกชันไม่สามารถแก้ไขได้ในระหว่างการสำรวจในขณะที่สำหรับลูปสามารถแก้ไขได้ในระหว่างการสำรวจ
ความแตกต่างระหว่าง ArrayList, LinkedList และ Vector
ArrayList: ประสิทธิภาพสูงส่วนใหญ่ใช้สำหรับการสืบค้น
LinkedList: ส่วนใหญ่ใช้สำหรับการแทรกและการลบ
เวกเตอร์: เธรด-ปลอดภัยส่วนใหญ่ใช้สำหรับการสืบค้น
รหัส:
นำเข้า java.util.arraylist; นำเข้า java.util.iterator; นำเข้า java.util.linkedlist; นำเข้า java.util.list; นำเข้า java.util.vector; คลาสสาธารณะ ListTest vector (); arraylist.add ("1"); // ประเภทอักขระ arraylist.add ("1"); // ทำซ้ำองค์ประกอบ arraylist.add ("2"); arraylist.add (1); // หมายเลขประเภท linkedList.add ("1"); linkedList.add ("1"); linkedList.add ("2"); linkedList.add (1); vector.add ("1"); vector.add ("1"); vector.add ("2"); System.out.println (obj);} สำหรับ (int i = 0; i <linkedList.size (); i ++) {// สามัญสำหรับ loop system.out.println (arraylist.get (i));} iterator it = vector.iterator (); // iterator ในขณะที่ (it.hasnext ()) {object j = it.next (); system.out.println (j);}}}}ความแตกต่างระหว่าง Hashset และ Treeset
HashSet: HashSet ถูกนำไปใช้โดยตารางแฮช ข้อมูลใน HashSet ไม่ได้ถูกเรียงลำดับ คุณสามารถใส่ null ได้ แต่คุณสามารถใส่ค่าว่างได้เพียงครั้งเดียว
Treeset: Treeset ถูกนำไปใช้โดยต้นไม้สองตัว ข้อมูลในชุดต้นไม้จะถูกจัดเรียงโดยอัตโนมัติและไม่อนุญาตให้วางค่า NULL
รหัส:
คลาสสาธารณะที่ตั้งอยู่ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {set hashset = new hashset (); set tereet = new Treeset (); hashset.add ("1"); // ประเภทอักขระ hashset.add ("1"); // องค์ประกอบซ้ำ hashset.add ("2"); hashset.add (1); // หมายเลข type tereset.add ("1"); Treeset.add ("1"); Treeset.add ("2"); //treeset.add(1); // รายงานข้อผิดพลาด Treeet ไม่สามารถเพิ่มประเภทข้อมูลที่แตกต่างกันสำหรับ (วัตถุ I: HASHSET) {// foreach loop system.out.println (i);} iterator it = treeet.iterator (); // iterator ในขณะที่ (it.hasnext ()) {object j = it.next (); system.out.println (j);}}}}หมายเหตุ: อินเทอร์เฟซชุดไม่มีวิธีการรับดังนั้นคุณไม่สามารถใช้ปกติสำหรับลูปเพื่อสำรวจ
ความแตกต่างระหว่าง HashMap, hashtable และ treemap
hashmap: hashmap อนุญาตให้หนึ่งคีย์ null และค่า null หลายค่า
Hashtable: คีย์และค่าของแฮชแต้มไม่ได้รับอนุญาตให้เป็นโมฆะ
TEEMAP: มันสามารถเรียงลำดับบันทึกที่บันทึกตามคีย์ โดยค่าเริ่มต้นมันจะถูกเรียงลำดับตามลำดับจากน้อยไปมากของค่าคีย์ คุณยังสามารถระบุตัวเปรียบเทียบการเรียงลำดับ เมื่อมันถูกสำรวจด้วยตัววนซ้ำบันทึกที่ได้รับจะถูกจัดเรียง
รหัส:
นำเข้า java.util.hashmap; นำเข้า java.util.hashtable; นำเข้า java.util.iterator; นำเข้า java.util.map นำเข้า java.util.set; นำเข้า java.util.treemap; hashtable (); MAP treemap = new treemap (); hashmap.put (1, "1"); // ประเภทตัวอักษรค่า hashmap.put (2, "1"); // ค่าเดียวกัน hashmap.put (3, "2"); hashmap.put (4, 1); // ค่าประเภทตัวเลข hashmap.put ("5", 1); // คีย์ประเภทอักขระ 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"); 1); treemap.put (1, "1"); treemap.put (2, "1"); treemap.put (5, "2"); treemap.put (4, 1); // treemap.put ("5", 1); // มีการรายงานข้อผิดพลาด TreEMAP ไม่สามารถเพิ่มคีย์ประเภทที่แตกต่างกัน // transip hashmap สำหรับ (คีย์วัตถุ: hashmap.keyset ()) {system.out.println (key);} // transip hashtable value (ค่า hashtable.values (system.out.out. hashmap.keyset (); สำหรับ (iterator iter = set.iterator (); iter.hasnext ();) {object key = iter.next (); ค่าวัตถุ = hashmap.get (key); system.out.println (คีย์+"/t"+ค่า);} // iterator table = hashtable.entryset (). iterator (); ในขณะที่ (table.hasnext ()) {map.entry entry = (map.entry) table.next (); Key Object = entry.getKey (); // รับค่าวัตถุคีย์ = entry.getValue (); // รับ value system.out.println (คีย์+"/t"+ค่า); } // การสำรวจซ้ำ ๆ ของ TreeMap คู่คีย์คู่ iterator tmp = treemap.entryset (). iterator (); ในขณะที่ (tmp.hasnext ()) {map.entry entry = (map.entry) tmp.next (); Key Object = entry.getKey (); // รับค่าวัตถุคีย์ = entry.getValue (); // รับ value system.out.println (คีย์+"/t"+ค่า); -คลาสเกี่ยวกับความปลอดภัยของเธรดรวมถึง: Vecto, Hashtabl, StringBuffe
ความปลอดภัยที่ไม่ใช่เธรด: ArrayList, LinkedList, HashMap, Hashset, Treemap, TreeSet, Stringbulider
หมายเหตุ: สามารถใช้งานร่วมกันได้แทน HashMap เพื่อความปลอดภัยของด้ายและมีประสิทธิภาพมากกว่าแฮช
กลไกของ Java ไม่สามารถรับประกันความปลอดภัยของด้ายได้อย่างเต็มที่ คุณต้องใช้รหัสด้วยตนเองและควบคุมด้วยตัวเอง