JavaRush /จาวาบล็อก /Random-TH /คอฟฟี่เบรค #185. คู่มือที่ครอบคลุมเกี่ยวกับ Java Collecti...

คอฟฟี่เบรค #185. คู่มือที่ครอบคลุมเกี่ยวกับ Java Collection Framework

เผยแพร่ในกลุ่ม
ที่มา: สื่อ บท ช่วยสอนนี้จะช่วยให้คุณเข้าใจการทำงานของคลาสและอินเทอร์เฟซต่างๆ ที่รวมอยู่ใน Java Collection Framework ได้ดียิ่งขึ้น คอฟฟี่เบรค #185.  คู่มือที่ครอบคลุมเกี่ยวกับ Java Collection Framework - 1Java Collection เป็นเฟรมเวิร์กที่ให้สถาปัตยกรรมแบบครบวงจรสำหรับการจัดเก็บและจัดการกลุ่มของอ็อบเจ็กต์ โดยแก่นของมันคือชุดของคลาสและอินเทอร์เฟซที่ให้วิธีมาตรฐานในการแสดงและจัดการคอลเลกชันของอ็อบเจ็กต์ในภาษา Java กรอบงานยังช่วยในการใช้งานโครงสร้างข้อมูลที่ใช้กันทั่วไป เช่น รายการ ชุด และแผนที่ Java Collection Framework ประกอบด้วยอินเทอร์เฟซและคลาสต่างๆ มากมาย นี่คือรายการบางส่วน:

อินเทอร์เฟซ

อินเทอร์เฟซใน Java Collection Framework กำหนดลักษณะการทำงานทั่วไปและการดำเนินการที่สามารถทำได้บนคอลเลกชัน ซึ่งรวมถึงการเพิ่มหรือลบรายการ การทำซ้ำรายการในคอลเลกชัน และอื่นๆ
  • คอลเลกชัน : อินเทอร์เฟซรูทในลำดับชั้นของคอลเลกชัน ซึ่งแสดงถึงกลุ่มของออบเจ็กต์ที่เรียกว่าองค์ประกอบ
  • รายการ : คอลเลกชันองค์ประกอบที่ได้รับคำสั่งซึ่งอนุญาตให้ทำซ้ำได้
  • Set : ชุดขององค์ประกอบที่ไม่อนุญาตให้ทำซ้ำ
  • แผนที่ : ชุดของคู่คีย์-ค่า โดยที่แต่ละคีย์ไม่ซ้ำกัน
  • คิว : คิวคือโครงสร้างข้อมูลที่ใช้ในการจัดเก็บองค์ประกอบในแบบเข้าก่อนออกก่อน (FIFO)
รายการนี้ไม่ได้รวมทุกอย่าง แต่รวมเฉพาะอินเทอร์เฟซที่ใช้มากที่สุดใน Java Collection Framework ทีนี้เรามาดูแต่ละอันกันดีกว่า

ของสะสม

คอลเลกชันคือกลุ่มของวัตถุที่เรียกว่าองค์ประกอบ นี่คือออบเจ็กต์ที่สามารถมีการอ้างอิงไปยังออบเจ็กต์อื่นได้ อินเทอร์เฟซคอลเลกชันเป็นรากของลำดับชั้นคอลเลกชัน นี่คืออินเทอร์เฟซพื้นฐานสำหรับคอลเลกชันทั้งหมดใน Java Collection Framework โดยจะกำหนดวิธีการพื้นฐานที่จะต้องนำไปใช้ในคอลเลกชันทั้งหมด เช่นadd() , Remove()และcontains( ) นี่คือตัวอย่างการใช้คอลเลกชันใน Java Collection Framework ที่นี่อินเทอร์เฟซคอลเลกชันใช้เพื่อเพิ่มและลบองค์ประกอบออกจากคอลเลกชัน:
import java.util.Collection;
import java.util.ArrayList;

public class CollectionExample {
    public static void main(String[] args) {
        // Создаем новую коллекцию
        Collection<String> stringCollection = new ArrayList<>();

        // Добавляем несколько элементов в коллекцию
        stringCollection.add("hello");
        stringCollection.add("world");
        stringCollection.add("foo");
        stringCollection.add("bar");

        // Печатаем число элементов в коллекции
        System.out.println("Number of elements: " + stringCollection.size());

        // Удаляем элемент из коллекции
        stringCollection.remove("foo");

        // Опять печатаем число элементов в коллекции
        System.out.println("Number of elements: " + stringCollection.size());
    }
}
ผลลัพธ์คือ:
จำนวนองค์ประกอบ: 4 จำนวนองค์ประกอบ: 3
อย่างที่คุณเห็น อินเทอร์เฟซคอลเลกชันเป็นวิธีที่ง่ายและสะดวกในการดำเนินการทั่วไปกับคอลเลกชันของออบเจ็กต์ มักใช้เป็นจุดเริ่มต้นเมื่อทำงานกับคอลเลกชันใน Java Java Collection Framework ประกอบด้วยอินเทอร์เฟซต่างๆ ที่กำหนดลักษณะการทำงานทั่วไปสำหรับคอลเลกชันประเภทต่างๆ บางส่วนเป็นส่วนหนึ่งของ กลุ่มอินเทอร์เฟซ java.util.Collection :
  • java.util.รายการ
  • java.util.set
  • java.util.คิว

java.util.รายการ

รายการคือคอลเลกชันของออบเจ็กต์ที่ได้รับการจัดลำดับ ซึ่งแต่ละองค์ประกอบจะมีตำแหน่งเฉพาะในรายการ อินเทอร์เฟซรายการขยายอินเทอร์เฟซคอลเลกชันและเพิ่มวิธีการต่างๆ ในการทำงานกับรายการ เช่น วิธีการเข้าถึงองค์ประกอบตามตำแหน่งในรายการ และวิธีการค้นหาและเรียงลำดับรายการ รายการสามารถมีองค์ประกอบที่ซ้ำกันองค์ประกอบเหล่านี้สามารถเข้าถึงได้ตามตำแหน่งในรายการ ต่อไปนี้เป็นตัวอย่างการใช้อินเทอร์เฟซรายการเพื่อเพิ่ม ลบ และเข้าถึงรายการในรายการ:
import java.util.List;
import java.util.ArrayList;

public class ListExample {
    public static void main(String[] args) {
        // Создаем новый список
        List<String> stringList = new ArrayList<>();

        // Добавляем несколько элементов в список
        stringList.add("India");
        stringList.add("UAE");
        stringList.add("London");
        stringList.add("US");

        // Печатаем первый элемент в списке
        System.out.println("First element: " + stringList.get(0));

        // Удаляем второй элемент из списка
        stringList.remove(1);

        // Печатаем второй элемент в списке
        System.out.println("Second element: " + stringList.get(1));
    }
}
บทสรุป:
องค์ประกอบที่หนึ่ง: อินเดีย องค์ประกอบที่สอง: ลอนดอน
ดังที่แสดงไว้ด้านบน อินเทอร์เฟซรายการมอบวิธีที่สะดวกในการทำงานกับคอลเลกชันองค์ประกอบที่เรียงลำดับ โดยทั่วไปจะใช้เมื่อคุณต้องการรักษาลำดับขององค์ประกอบในคอลเลกชัน หรือเมื่อคุณต้องการเข้าถึงองค์ประกอบตามดัชนีในรายการ

java.util.Set

ชุดใน Java Collection Framework คือชุดขององค์ประกอบเฉพาะที่ไม่เรียงลำดับซึ่งไม่อนุญาตให้มีองค์ประกอบที่ซ้ำกัน อินเทอร์เฟซ Set จะขยายอินเทอร์เฟซคอลเลกชันและเพิ่มวิธีการต่างๆ เช่น วิธีการตรวจสอบว่าองค์ประกอบอยู่ในชุดหรือไม่ และวิธีการเพิ่มและลบองค์ประกอบออกจากชุด นี่คือตัวอย่างของการใช้อินเทอร์เฟซ Set เพื่อเพิ่มและลบองค์ประกอบออกจากชุดใน Java Collection Framework:
import java.util.Set;
import java.util.HashSet;

public class SetExample {
    public static void main(String[] args) {
        // Создаем новый set
        Set<String> stringSet = new HashSet<>();

        // Добавляем несколько элементов в set
        stringSet.add("Jan");
        stringSet.add("Feb");
        stringSet.add("March");
        stringSet.add("April");

        // Проверяем наличие в set element "March"
        if (stringSet.contains("March")) {
            System.out.println("The set contains the element 'March'");
        }

        // Удаляем элемент "April" из set
        stringSet.remove("April");

        // Опять проверяем наличие element "April" в set
        if (!stringSet.contains("April")) {
            System.out.println("The set no longer contains the element 'April'");
        }
    }
}
บทสรุป:
ชุดประกอบด้วยองค์ประกอบ 'มีนาคม' ชุดไม่มีองค์ประกอบ 'เมษายน' อีกต่อไป

java.util.คิว

คิวคือโครงสร้างข้อมูลที่ใช้ในการจัดเก็บองค์ประกอบตามลำดับเข้าก่อนออกก่อน (FIFO) ซึ่งหมายความว่าองค์ประกอบแรกที่เพิ่มลงในคิวจะเป็นองค์ประกอบแรกที่ถูกลบออก นี่คือตัวอย่างวิธีใช้คิวใน Java Collection Framework:
// Creation очереди
Queue<String> queue = new LinkedList<>();

// Добавление элементов в очередь
queue.add("apple");
queue.add("banana");
queue.add("orange");
// Печатаем очередь
System.out.println("Queue: " + queue);
// Удаляем элемент из очереди
String element = queue.remove();
System.out.println("Removed element: " + element);
// Печатаем обновленную очередь
System.out.println("Queue: " + queue);
ในตัวอย่างนี้ เราได้สร้างคิวสตริงและเพิ่มองค์ประกอบสามรายการลงไป: “apple”, “banana” และ “orange” จากนั้นเราจะพิมพ์คิวเพื่อดูสถานะปัจจุบัน ต่อไป เราจะลบองค์ประกอบออกจากคิวและพิมพ์ไปยังคอนโซล สุดท้าย เราจะพิมพ์คิวที่อัปเดตเพื่อให้แน่ใจว่าองค์ประกอบที่ถูกลบไม่อยู่ในคิวอีกต่อไป

แผนที่

อินเทอร์เฟซ java.util.Mapใน Java Collection Framework ใช้เพื่อแมปคีย์กับค่า ช่วยให้คุณสามารถจัดเก็บองค์ประกอบเป็นคู่คีย์-ค่า และจัดเตรียมวิธีในการเข้าถึง แก้ไข และวนซ้ำองค์ประกอบในแผนที่ ด้านล่างนี้เป็นตัวอย่างของการใช้ อินเทอร์เฟ ซแผนที่ :
// Создаем Map
 Map<String, Integer> map = new  HashMap <>();
// Добавляем элементы в Map
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
// Печать Map
 System.out.println("Map: " + map);
// Получаем meaning для определенного ключа
int  value  = map.get( "banana" );
System.out.println("Value for 'banana': " + value);
// Удаляем элемент из Map
map.remove("orange");
// Печать обновленной карты
 System.out.println( "Map: " + map);
ในตัวอย่างนี้ เราสร้างแมปของสตริงและจำนวนเต็มโดยเพิ่มองค์ประกอบสามอย่าง: “apple” แมปเป็น 1, “banana” แมปเป็น 2 และแมป “สีส้ม” เข้ากับ 3 จากนั้นเราจะพิมพ์แผนที่เพื่อดูปัจจุบัน ความหมาย. หลังจากนั้นเราจะได้รับค่าของคีย์ "กล้วย" และพิมพ์ลงในคอนโซล สุดท้าย เราจะลบคู่คีย์-ค่าสำหรับ "สีส้ม" ออกจากแผนที่ และพิมพ์แผนที่ที่อัปเดตเพื่อดูว่าองค์ประกอบที่ถูกลบออกไปนั้นไม่มีอยู่อีกต่อไป

ชั้นเรียน

คลาสคือการใช้งานอินเทอร์เฟซการรวบรวมอย่างเป็นรูปธรรม โดยจัดให้มีการใช้งานเฉพาะของพฤติกรรมและการดำเนินการทั่วไปที่กำหนดโดยอินเทอร์เฟซในกรอบงาน
  • ArrayList : การใช้งาน อินเทอร์เฟซ รายการพร้อมอาร์เรย์ที่ปรับขนาดได้
  • LinkedList : รายการที่มีการเชื่อมโยงแบบทวีคูณ การใช้งานของList และ Deque interfaces
  • HashSet : การใช้งานSetที่ใช้ตารางแฮชสำหรับการจัดเก็บ
  • TreeSet : การดำเนินการของSetที่ใช้ tree สำหรับการจัดเก็บ
  • HashMap : การใช้งานแผนที่ที่ใช้ตารางแฮชสำหรับการจัดเก็บ
รายการด้านบนเป็นหนึ่งในคลาสที่ใช้บ่อยที่สุดใน Java Collection Framework ตอนนี้เรามาดูคำอธิบายโดยละเอียดของคลาสเหล่านี้กัน

ArrayList

คลาสjava.util.ArrayListในคอลเลกชัน Java ใช้เพื่อจัดเก็บอาร์เรย์ขององค์ประกอบที่ปรับขนาดได้ในรายการ เป็นการใช้งาน อินเทอร์เฟซ java.util.List ที่ใช้กันอย่างแพร่หลาย ซึ่งใช้อาร์เรย์เพื่อจัดเก็บองค์ประกอบและให้วิธีที่มีประสิทธิภาพสำหรับการเข้าถึง การแก้ไข และการวนซ้ำผ่านองค์ประกอบในรายการ คลาสjava.util.ArrayListให้การเข้าถึงองค์ประกอบแบบสุ่มอย่างรวดเร็ว แต่การแทรกและการลบที่ตำแหน่งสุ่มช้า ด้านล่างนี้เป็นตัวอย่างของการใช้ คลาส ArrayListใน Java Collection Framework:
// Создаем array list
List<String> list = new ArrayList<>();
// Добавляем элементы в array list
list.add("qa");
list.add("devops");
list.add("dev");
// Печатаем array list
System.out.println("Array list: " + list);
// Доступ к элементу по определенному индексу
String element = list.get(1);
System.out.println("Element at index 1: " + element);
// Удаление element из the array list
list.remove(1);
// Print the updated array list
System.out.println("Array list: " + list);
อย่างที่คุณเห็น เราได้สร้างอาร์เรย์ของสตริงและเพิ่มองค์ประกอบสามรายการเข้าไป: “qa”, “devops” และ “dev” จากนั้นเราพิมพ์รายการอาร์เรย์เพื่อดูสถานะปัจจุบัน หลังจากนี้ เราจะเข้าถึงองค์ประกอบที่ดัชนี 1 และพิมพ์ไปยังคอนโซล สุดท้าย เราจะลบองค์ประกอบที่ดัชนี 1 ออกจากรายการอาร์เรย์ และพิมพ์รายการอาร์เรย์ที่อัปเดตเพื่อให้แน่ใจว่าองค์ประกอบที่ถูกลบจะไม่อยู่ในรายการอีกต่อไป

รายการที่เชื่อมโยง

คลาสjava.util.LinkedListใน Java Collection Framework สืบทอดมาจาก คลาส AbstractListและใช้ อินเทอร์เฟ ซListและDeque โดยให้วิธีการที่มีประสิทธิภาพในการเพิ่ม ลบ และเข้าถึงองค์ประกอบที่จุดเริ่มต้นและจุดสิ้นสุดของรายการ คลาสนี้ยังเป็นการปรับใช้ อินเทอร์เฟ ซรายการซึ่งใช้รายการแบบเชื่อมโยงสองเท่าเพื่อจัดเก็บองค์ประกอบ ให้การแทรกและการลบอย่างรวดเร็วในตำแหน่งที่ต้องการ แต่เข้าถึงองค์ประกอบต่างๆ แบบสุ่มได้ช้า นี่คือตัวอย่างวิธีใช้ คลาส LinkedListใน Java Collection Framework:
// Создаем linked list
List<String> list = new LinkedList<>();
// Добавляем элементы в linked list
list.add("selenium");
list.add("cypress");
list.add("playwright");
// Печатаем linked list
System.out.println("Linked list: " + list);
// Добавляем элемент в начало списка
list.add(0, "webdriver.io");
// Печатаем обновленный linked list
System.out.println("Linked list: " + list);
// Удаляем первый элемент в списке
list.remove(0);
// Еще раз печатаем обновленный linked list
System.out.println("Linked list: " + list);
ในตัวอย่างนี้ เราสร้างรายการสตริงที่เชื่อมโยงและเพิ่มองค์ประกอบสามรายการเข้าไป: “ซีลีเนียม”, “ไซเปรส” และ “นักเขียนบทละคร” จากนั้นเราจะพิมพ์รายการที่เชื่อมโยงเพื่อดูสถานะปัจจุบัน ต่อไป เราจะเพิ่มองค์ประกอบ “webdriver.io” ไว้ที่จุดเริ่มต้นของรายการและพิมพ์รายการลิงก์ที่อัปเดต สุดท้าย เราจะลบองค์ประกอบแรกออกจากรายการและพิมพ์รายการลิงก์ที่อัปเดตอีกครั้งเพื่อดูว่าองค์ประกอบที่ถูกลบไม่อยู่ในรายการอีกต่อไป

แฮชเซ็ต

คลาสjava.util.HashSetใน Java Collection Framework ใช้เพื่อจัดเก็บคอลเลกชันขององค์ประกอบที่ไม่ซ้ำกันในชุด โดยจัดให้ มีการใช้งานอินเทอร์ เฟซ java.util.Setตามตารางแฮช นอกจากนี้ยังให้การแทรก การลบ และการค้นหาที่รวดเร็ว แต่ไม่ได้รักษาลำดับขององค์ประกอบ ด้านล่างนี้เป็นตัวอย่างของการใช้ คลาส HashSetใน Java Collection Framework:
// Создаем hash set
Set<String> set = new HashSet<>();

// Добавляем элементы в hash set
set.add("rose");
set.add("lily");
set.add("lotus");
// Попытка добавить повторяющийся элемент
set.add("rose");
// Печатаем hash set
System.out.println("Hash set: " + set);
// Удаляем элемент из hash set
set.remove("lily");
// Печать обновленного hash set
System.out.println("Hash set: " + set);
ที่นี่เราสร้างชุดสตริงแฮชและเพิ่มองค์ประกอบสามรายการเข้าไป: “กุหลาบ”, “ลิลลี่” และ “ดอกบัว” จากนั้นเราลองเพิ่มองค์ประกอบ "กุหลาบ" อีกครั้ง แต่เนื่องจากชุดแฮชไม่อนุญาตให้มีรายการซ้ำ จึงไม่สามารถเพิ่มได้ หลังจากนี้เราจะพิมพ์ชุดแฮชเพื่อดูสถานะปัจจุบัน จากนั้นเราจะลบองค์ประกอบ “ลิลลี่” ออกจากชุดและพิมพ์แฮชที่อัปเดตของชุดเพื่อดูว่าองค์ประกอบที่ถูกลบไม่อยู่ในชุดอีกต่อไป

ทรีเซ็ต

คลาสjava.util.TreeSetใน Java Collection Framework ใช้เพื่อจัดเก็บคอลเลกชันขององค์ประกอบที่ไม่ซ้ำกันในชุดที่เรียงลำดับจากน้อยไปหามาก โดยจัดให้มีการใช้งานอินเทอร์เฟซ java.util.Setแบบทรีเพื่อจัดเก็บองค์ประกอบโดยไม่อนุญาตให้มีองค์ประกอบที่ซ้ำกัน คลาสจัดเตรียมการแทรก การลบ และการค้นหาที่รวดเร็ว และรักษาลำดับขององค์ประกอบตามลำดับตามธรรมชาติหรือตัวเปรียบเทียบ นี่คือตัวอย่างวิธีใช้ คลาส TreeSetใน Java Collection Framework:
// Создаем tree set
Set<String> set = new TreeSet<>();

// Добавляем элементы в tree set
set.add("apple");
set.add("banana");
set.add("orange");
// Попытка добавить повторяющийся элемент
set.add("apple");
// Печатаем tree set
System.out.println("Tree set: " + set);
// Удаляем элемент из tree set
set.remove("banana");
// Печатаем обновленный tree set
System.out.println("Tree set: " + set);
ในตัวอย่างนี้ เราสร้างชุดสตริงแบบต้นไม้และเพิ่มองค์ประกอบสามรายการ: "apple", "banana" และ "orange" จากนั้นเราลองเพิ่มองค์ประกอบ "apple" อีกครั้ง แต่เนื่องจากชุดต้นไม้ไม่อนุญาตให้มีรายการซ้ำ จึงไม่สามารถเพิ่มได้ หลังจากนี้เราจะพิมพ์ชุดต้นไม้เพื่อดูสถานะปัจจุบัน เนื่องจากชุดต้นไม้เรียงลำดับจากน้อยไปหามาก องค์ประกอบต่างๆ จะถูกพิมพ์ตามลำดับ: “แอปเปิ้ล”, “กล้วย” และ “สีส้ม” จากนั้นเราจะลบองค์ประกอบ “กล้วย” ออกจากชุดและพิมพ์ชุดต้นไม้ที่อัปเดตเพื่อดูว่าองค์ประกอบที่ถูกลบไม่อยู่ในชุดอีกต่อไป

แฮชแมป

คลาสjava.util.HashMapใน Java Collection Framework ใช้เพื่อจัดเก็บการแมปคีย์กับค่าในแผนที่ ให้ การใช้งานอินเทอร์เฟซ java.util.Mapตามตารางแฮช และอนุญาตให้องค์ประกอบต่างๆ ถูกจัดเก็บเป็นคู่คีย์-ค่า คลาสนี้มีการแทรก การลบ และการค้นหาที่รวดเร็ว แต่ไม่ได้รักษาลำดับขององค์ประกอบ นี่คือตัวอย่างวิธีใช้ คลาส HashMapใน Java Collection Framework:
// Создаем hash map
Map<String, Integer> map = new HashMap<>();

// Добавляем элементы в hash map
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
// Печатаем hash map
System.out.println("Hash map: " + map);
// Получаем meaning для определенного ключа
int value = map.get("banana");
System.out.println("Value for 'banana': " + value);
// Удаляем элемент из hash map
map.remove("orange");
// Печатаем обновленный hash map
System.out.println("Hash map: " + map);
ในตัวอย่างนี้ เราสร้างแมปแฮชของสตริงจำนวนเต็มและเพิ่มสามองค์ประกอบเข้าไป: “apple” ตรงกับ 1, “banana” ตรงกับ 2 และ “สีส้ม” ตรงกับ 3 จากนั้นเราจะพิมพ์แมปแฮชเพื่อดูสถานะปัจจุบัน หลังจากนั้นเราจะได้รับค่าของคีย์ "กล้วย" และพิมพ์ลงในคอนโซล สุดท้าย เราจะลบคู่คีย์-ค่าสำหรับ "สีส้ม" ออกจากแมปแฮช และพิมพ์แมปแฮชที่อัปเดตเพื่อดูว่าองค์ประกอบที่ถูกลบนั้นไม่อยู่ในนั้นอีกต่อไป

บทสรุป

Java Collection Framework คือชุดของคลาสและอินเทอร์เฟซที่ให้วิธีมาตรฐานในการแสดงและจัดการคอลเลกชันของอ็อบเจ็กต์ในภาษาการเขียนโปรแกรม Java สิ่งนี้ช่วยให้นักพัฒนา/ผู้ทดสอบทำงานกับคอลเลกชันของออบเจ็กต์ในลักษณะที่สอดคล้องกันและมีประสิทธิภาพ เฟรมเวิร์กจัดเตรียมวิธีการจัดเก็บ เข้าถึง และจัดการรายการในคอลเลกชัน และช่วยให้พวกเขาสามารถสลับระหว่างการใช้งานคอลเลกชันต่างๆ ได้อย่างง่ายดาย ขึ้นอยู่กับความต้องการของแอปพลิเคชัน
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION