บทนำ
ในบทความนี้ เราจะเรียนรู้วิธีการลบสมาชิกซ้ำ (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 ที่ไม่รับประกันลำดับ