Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

โปรแกรม Java ลบสมาชิกซ้ำใน ArrayList


บทนำ

ในบทความนี้ เราจะเรียนรู้วิธีการลบสมาชิกซ้ำ (Remove duplicate elements) จาก ArrayList คลาส ArrayList ขยายจาก AbstractList และ implements interface List รองรับ dynamic array ที่สามารถขยายได้ตามต้องการ

ArrayList สร้างขึ้นพร้อมขนาดเริ่มต้น เมื่อขนาดเกินกว่าที่กำหนด คอลเลกชันจะขยายตัวอัตโนมัติ เมื่อลบออบเจ็กต์ออก อาร์เรย์อาจหดเล็กลงได้

ตัวอย่างการทำงาน

อินพุทตัวอย่าง:

The list is defined as: [Java, Scala, JavaScript, Scala]

เอาต์พุทที่คาดหวัง:

The list after removing the duplicates is: [Java, Scala, JavaScript]

อัลกอริทึม

ขั้นตอนที่ 1 - เริ่มต้น
ขั้นตอนที่ 2 - ประกาศ ArrayList ชื่อ input_list และประกาศ Set ชื่อ temp
ขั้นตอนที่ 3 - กำหนดค่า
ขั้นตอนที่ 4 - แปลงลิสต์เป็นเซต (Set) เนื่องจากเซตไม่สามารถมีค่าซ้ำได้
ขั้นตอนที่ 5 - แสดงผลลัพธ์
ขั้นตอนที่ 6 - จบการทำงาน

ตัวอย่างที่ 1: เขียนในฟังก์ชัน main โดยตรง

import java.util.*;

public class Demo {
    public static void main(String args[]) {
        ArrayList input_list = new ArrayList();
        input_list.add("Java");
        input_list.add("Scala");
        input_list.add("JavaScript");
        input_list.add("Scala");
        System.out.println("The list is defined as: " + input_list);
        Set temp = new LinkedHashSet<>(input_list);
        List result_list = new ArrayList<>(temp);
        System.out.println("The list after removing the duplicates is: " + result_list);
    }
}

เอาต์พุท

The list is defined as: [Java, Scala, JavaScript, Scala]
The list after removing the duplicates is: [Java, Scala, JavaScript]

ตัวอย่างที่ 2: ใช้เมธอดแยก (Object-Oriented Style)

import java.util.*;

public class Demo {
    static void remove_duplicates(ArrayList input_list) {
        Set temp = new LinkedHashSet<>(input_list);
        List result_list = new ArrayList<>(temp);
        System.out.println("The list after removing the duplicates is: " + result_list);
    }
    
    public static void main(String args[]) {
        ArrayList input_list = new ArrayList();
        input_list.add("Java");
        input_list.add("Scala");
        input_list.add("JavaScript");
        input_list.add("Scala");
        System.out.println("The list is defined as: " + input_list);
        remove_duplicates(input_list);
    }
}

เอาต์พุท

The list is defined as: [Java, Scala, JavaScript, Scala]
The list after removing the duplicates is: [Java, Scala, JavaScript]

เหตุผลที่ใช้ LinkedHashSet: รักษาลำดับการแทรก (Insertion order) ของสมาชิก ไม่เหมือน HashSet ที่ไม่รับประกันลำดับ