1. ภาพรวมกรอบการรวบรวม Java
Java SE รวมถึง Java Collection Framework (JCF) ประกอบด้วยชุดของคลาสและอินเทอร์เฟซ ฟังก์ชั่นหลักของมันคือการจัดระเบียบข้อมูลที่เก็บไว้ในโครงสร้างที่แน่นอนและเข้าถึงข้อมูลนี้ด้วยวิธีที่เฉพาะเจาะจง เป้าหมายคือการจัดเตรียมกรอบทั่วไปสำหรับการประมวลผลการรวบรวมวัตถุและลดปริมาณการเข้ารหัสที่โปรแกรมเมอร์ใช้เมื่อประมวลผลคอลเลกชันวัตถุที่แตกต่างกัน
ความแตกต่างบางอย่างในคลาสคอลเลกชันนอกเหนือจากว่าพวกเขาสนับสนุนการดำเนินงานองค์ประกอบที่ซ้ำกันหรือไม่รวมถึงองค์ประกอบที่อยู่ในลำดับและได้รับอนุญาตให้เพิ่มองค์ประกอบ NULL หรือไม่ ตามความแตกต่างทั้งสามนี้ในกรอบการรวบรวม Java วิธีการจัดเก็บของวัตถุแบ่งออกเป็นสามประเภทคือ:
เพื่อรองรับการเรียงลำดับและการเข้าถึงการเข้าถึงวัตถุของวัตถุมีหลายอินเทอร์เฟซที่มีอยู่ในกรอบคอลเลกชัน Java:
2. อินเทอร์เฟซการรวบรวมและอินเตอร์เฟสตัววนซ้ำ
วิธีการพื้นฐานบางอย่างที่ใช้ร่วมกันโดยวัตถุคอลเลกชันถูกกำหนดไว้ในอินเทอร์เฟซคอลเลกชัน
| วิธี | อธิบาย |
| ขนาด int () | ส่งคืนจำนวนองค์ประกอบที่มีอยู่ในคอลเลกชันปัจจุบัน |
| isempyt () | ตรวจสอบว่าชุดมีองค์ประกอบหรือไม่ |
| บูลีนประกอบด้วย (Object O) | ตรวจสอบว่าองค์ประกอบที่ระบุมีอยู่ในคอลเลกชันหรือไม่ |
| เพิ่ม (วัตถุ o) | เพิ่มองค์ประกอบในคอลเลกชัน |
| ลบ (วัตถุ o) | ลบองค์ประกอบจากคอลเลกชัน |
| Iterator Iterator () | ส่งคืน Traverser เพื่อเข้าถึงองค์ประกอบต่าง ๆ ในคอลเลกชัน |
อินเทอร์เฟซ Iterator เป็นอินเทอร์เฟซที่ใช้ในการสำรวจคอลเลกชัน
| วิธี | อธิบาย |
| hasnext () | หากมีองค์ประกอบเพิ่มเติมในคอลเลกชันวิธีการจะกลับมาเป็นจริง |
| ต่อไป() | ส่งคืนองค์ประกอบถัดไปในคอลเลกชัน |
| ลบ() | ลบองค์ประกอบสุดท้ายที่ส่งคืนโดย iterator |
1. รายการอินเทอร์เฟซ
อินเทอร์เฟซรายการนั้นสืบทอดมาจากอินเทอร์เฟซคอลเลกชันและมีคุณสมบัติดังต่อไปนี้:
คลาสการใช้งานที่ใช้กันมากที่สุดสำหรับอินเตอร์เฟสรายการคือคลาส ArrayList และคลาส LinkedList
1) .ArrayList
ตัวอย่างโปรแกรม:
แพ็คเกจ lei; นำเข้า java.util.arraylist; นำเข้า java.util.list; การทดสอบระดับสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {list list = new ArrayList <> (); list.add (1); list.add ("จาง"); list.add (เท็จ); list.add ('a'); list.add (0, "lisi"); list.add (1); list.remove (1); list.remove (2); list.set (0, "Wangwu"); สำหรับ (int i = 0; i <list.size (); i ++) {system.out.println (list.get (i)); -เมธอด Equals () ที่กำหนดโดยคลาสวัตถุจะส่งคืนจริงเฉพาะเมื่อวัตถุส่งผ่านไปยังวิธีการและการเรียกวัตถุวิธีการเป็นวัตถุเดียวกัน วัตถุสองชิ้นที่มีสถานะเดียวกันถือได้ว่าเป็นวัตถุเดียวกันโดยการเขียนทับวิธี Equals ()
2). linkedlist
| วิธี | อธิบาย |
| เป็นโมฆะ addfirst | เพิ่มวัตถุที่จุดเริ่มต้นของรายการที่เชื่อมโยง |
| เป็นโมฆะ addlast | เพิ่มวัตถุในตอนท้ายของรายการที่เชื่อมโยง |
| getFirst () | ส่งคืนองค์ประกอบแรกในรายการที่เชื่อมโยง |
| getLast () | ส่งคืนองค์ประกอบสุดท้ายในรายการที่เชื่อมโยง |
| removeFirst () | ลบองค์ประกอบแรกในรายการที่เชื่อมโยง |
| Removelast () | ลบองค์ประกอบสุดท้ายในรายการที่เชื่อมโยง |
ตัวอย่างโปรแกรม:
แพ็คเกจ lei; นำเข้า java.util.linkedList; นำเข้า java.util.list; คลาสสาธารณะ test2 {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {linkedList l = new linkedList <> (); L.Add ("จาง"); L.Add ("Lisi"); L.Addfirst (1); L.Addlast (4); System.out.println (l.getfirst ()); System.out.println (L.GetLast ()); L.RemoveFirst (); L.RemoVelast (); สำหรับ (int i = 0; i <l.size (); i ++) {system.out.println (l.get (i)); -การเลือก LinkedList vs. ArrayList
หากรายการจำเป็นต้องเข้าถึงได้อย่างรวดเร็ว แต่ไม่ได้แทรกและลบองค์ประกอบบ่อยครั้งมันจะดีกว่าที่จะเลือก ArrayList; หากรายการจำเป็นต้องแทรกและลบบ่อยครั้งคุณควรเลือก LinkedList
2.Set อินเทอร์เฟซ
อินเทอร์เฟซชุดสืบทอดมาจากอินเตอร์เฟสคอลเลกชันและยังสืบทอดวิธีการทั้งหมดของอินเทอร์เฟซคอลเลกชัน อินเทอร์เฟซชุดมีคุณสมบัติดังต่อไปนี้:
สิ่งที่ใช้กันมากที่สุดในการใช้งานอินเทอร์เฟซที่ตั้งไว้คือคลาส HashSet และคลาส Treeset
1) .hashset
คลาส HashSet เป็นการใช้งานอินเทอร์เฟซที่ตั้งอยู่บนอัลกอริทึมแฮช มันมีลักษณะดังต่อไปนี้:
หากคลาสที่เราเขียนนิยามใหม่ของวิธี Equals ดังนั้นคลาสนี้จะต้องกำหนดวิธี HashCode () ใหม่และตรวจสอบให้แน่ใจว่าเมื่อผลลัพธ์ของวัตถุทั้งสองถูกนำมาเปรียบเทียบกับวิธี Equals เป็นจริง
ตัวอย่างโปรแกรม:
แพ็คเกจ lei; นำเข้า java.util.hashset; นำเข้า java.util.set; คลาสสาธารณะ test4 {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {set <string> set = new hashset <string> (); set.add ("จาง"); set.add ("lisi"); สำหรับ (สตริง s: set) {system.out.println (s); -2). Treeset
คลาส Treeet ไม่เพียง แต่ใช้อินเทอร์เฟซชุดคลาสเท่านั้น แต่ยังใช้อินเทอร์เฟซ SortedSet เพื่อให้แน่ใจว่าวัตถุในคอลเลกชันจะถูกจัดเรียงตามลำดับที่แน่นอน เมื่อวัตถุถูกเพิ่มเข้าไปในคอลเลกชัน Treeet มันจะถูกแทรกลงในลำดับของวัตถุที่สั่งซื้อ แต่การเรียงลำดับนี้ไม่ได้เรียงลำดับตามลำดับที่วัตถุถูกเพิ่ม แต่เรียงลำดับตามอัลกอริทึมที่แน่นอน
Treeset เรียงลำดับองค์ประกอบตามลำดับตามธรรมชาติขององค์ประกอบหรือเรียงลำดับตามตัวเปรียบเทียบที่ให้เมื่อสร้างชุด Treeset รองรับวิธีการเรียงลำดับสองวิธี: การเรียงลำดับตามธรรมชาติและการเรียงลำดับแบบกำหนดเอง
3. แมปอินเทอร์เฟซ
อินเทอร์เฟซแผนที่ (MAP) เป็นอีกหนึ่งอินเตอร์เฟสที่สำคัญในเฟรมเวิร์ก Java Collection ที่แตกต่างจากอินเทอร์เฟซคอลเลกชัน มันสอดคล้องกับการรวบรวมความสัมพันธ์ที่สอดคล้องกันจากคีย์ไปยังค่า มีวัตถุสองกลุ่มในคอนเทนเนอร์ Object Object MAP จะใช้วัตถุหนึ่งกลุ่มเพื่อบันทึกคีย์ในแผนที่และกลุ่มอื่นใช้เพื่อบันทึกค่า คีย์และค่าสามารถอัพเกรดข้อมูลประเภทอ้างอิงใด ๆ คีย์ไม่สามารถทำซ้ำได้ แต่สามารถทำซ้ำค่าได้
1) .hashmap
HashMap เป็นการใช้งานอินเทอร์เฟซแผนที่ตามอัลกอริทึมแฮช HashMap บันทึกคีย์ในตารางแฮชเพื่อการบำรุงรักษาและคีย์ไม่ซ้ำกัน อย่างไรก็ตาม HASHMAP ไม่รับประกันว่าคีย์จะถูกจัดเรียงตามลำดับที่เฉพาะเจาะจงโดยเฉพาะอย่างยิ่งคำสั่งซื้อไม่เปลี่ยนแปลงอย่างถาวร
คลาส HashMap ใช้อินเทอร์เฟซ MAP ดังนั้นจึงมีวิธีการทั้งหมดของอินเตอร์เฟส MAP
แพ็คเกจวันที่ 1228; นำเข้า Java.util.*; คลาสสาธารณะ hashmapdemo {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// สร้างแผนที่ HashMap ใหม่ <สตริง, สตริง> map = hashmap ใหม่ <สตริง, สตริง> (); map.put ("A1", "Xiao"); map.put ("b2", "xiaol"); map.put ("a4", "xiaosd"); map.put ("b1", "12a"); map.put ("A3", "1"); // ใช้ตัววนซ้ำเพื่อสำรวจคีย์และค่า System.out.println ("ก่อนค่าแผนที่คือ:"); ตั้งค่า <string> keys = map.keyset (); สำหรับ (iterator <string> i = keys.iterator (); i.hasnext ();) {สตริงคีย์ = i.next (); ค่าสตริง = map.get (คีย์); System.out.println (คีย์ + "=" + ค่า); } // ลบค่าด้วยคีย์ "A4" System.out.println ("/ndelete องค์ประกอบที่มีค่าคีย์ A4"); map.remove ("A4"); // // ใช้ iterator เพื่อสำรวจคีย์และค่า System.out.println ("/n ค่าแผนที่หลังจาก:"); ปุ่ม = map.keyset (); สำหรับ (iterator <string> i = keys.iterator (); i.hasnext ();) {สตริงคีย์ = i.next (); ค่าสตริง = map.get (คีย์); System.out.println (คีย์ + "=" + ค่า); -2) .treemap
คลาส Treemap เป็นการใช้งานอินเตอร์เฟสแผนที่โดยใช้อัลกอริทึมต้นไม้สีแดงและสีดำ วิธีการจัดเก็บของคีย์ใน treemap นั้นคล้ายกับ Treeet มันเก็บกุญแจไว้ในต้นไม้และลำดับของคีย์จัดเรียงตามลำดับตามธรรมชาติหรือสั่งซื้อที่กำหนดเอง
ตัวอย่างโปรแกรม:
แพ็คเกจวันที่ 1228; นำเข้า Java.util.*; Public Class Public TreemapDemo {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// สร้างแผนที่ treemap ใหม่ <จำนวนเต็ม, สตริง> map = ใหม่ treemap <จำนวนเต็ม, สตริง> (); map.put (1, "หนึ่ง"); map.put (2, "สอง"); map.put (3, "สาม"); map.put (4, "สี่"); map.put (5, "ห้า"); // ใช้ตัววนซ้ำเพื่อแสดงคีย์และค่า System.out.println ("ค่าแผนที่ก่อนหน้าคือ:"); ตั้งค่า <teeger> keys = map.keyset (); สำหรับ (คีย์วัตถุ: คีย์) {ค่าสตริง = map.get (คีย์); System.out.println (คีย์+"="+ค่า); } // ลบค่าของคีย์ 3 System.out.println ("/ndelete องค์ประกอบที่มีค่าคีย์ 3"); แผนที่ลบ (3); // ใช้ตัววนซ้ำเพื่อแสดงคีย์และค่า System.out.println ("/n ค่าหลังจากแผนที่คือ:"); สำหรับ (คีย์วัตถุ: คีย์) {ค่าสตริง = map.get (คีย์); System.out.println (คีย์+"="+ค่า); -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะช่วยในการศึกษาหรือทำงานของทุกคน ฉันหวังว่าจะสนับสนุน Wulin.com เพิ่มเติม!