Trong bài viết này, chúng ta sẽ tìm hiểu cách xóa phần tử trùng lặp (duplicate) khỏi ArrayList. ArrayList mở rộng AbstractList và triển khai List interface, hỗ trợ mảng động.
Ví dụ minh họa
Đầu vào:
Danh sách được định nghĩa: [Java, Scala, JavaScript, Scala]
Đầu ra mong muốn:
Danh sách sau khi xóa trùng lặp: [Java, Scala, JavaScript]
Thuật toán
- Bắt đầu
- Khai báo ArrayList
input_listvà Settemp - Gán giá trị
- Chuyển List sang Set (Set không cho phép trùng lặp) - dùng LinkedHashSet để giữ thứ tự
- Chuyển ngược Set về List
- Hiển thị kết quả
- Kết thúc
Ví dụ 1: Xử lý trực tiếp trong main
import java.util.*;
public class Demo {
public static void main(String args[]) {
ArrayList<String> input_list = new ArrayList<String>();
input_list.add("Java");
input_list.add("Scala");
input_list.add("JavaScript");
input_list.add("Scala");
System.out.println("Danh sách được định nghĩa: " + input_list);
Set<String> temp = new LinkedHashSet<>(input_list);
List<String> result_list = new ArrayList<>(temp);
System.out.println("Danh sách sau khi xóa trùng lặp: " + result_list);
}
}
Kết quả
Danh sách được định nghĩa: [Java, Scala, JavaScript, Scala] Danh sách sau khi xóa trùng lặp: [Java, Scala, JavaScript]
Ví dụ 2: Sử dụng phương thức tách biệt (OOP)
import java.util.*;
public class Demo {
static void remove_duplicates(ArrayList<String> input_list) {
Set<String> temp = new LinkedHashSet<>(input_list);
List<String> result_list = new ArrayList<>(temp);
System.out.println("Danh sách sau khi xóa trùng lặp: " + result_list);
}
public static void main(String args[]) {
ArrayList<String> input_list = new ArrayList<String>();
input_list.add("Java");
input_list.add("Scala");
input_list.add("JavaScript");
input_list.add("Scala");
System.out.println("Danh sách được định nghĩa: " + input_list);
remove_duplicates(input_list);
}
}
Kết quả
Danh sách được định nghĩa: [Java, Scala, JavaScript, Scala] Danh sách sau khi xóa trùng lặp: [Java, Scala, JavaScript]