Menu
CoddyTech

Toán học: hiệu đối xứng

Thuộc phần Logic và luồng chương trình trong hành trình Java của Coddy. Bài học 32 trên 59.

Hiệu đối xứng của hai tập hợp (set) là một tập hợp mới chứa các phần tử có trong một trong hai tập hợp nhưng không có trong cả hai. Trong Java, bạn có thể tính giá trị này bằng cách:

  1. Tìm hiệu của tập hợp thứ nhất so với tập hợp thứ hai.
  1. Tìm phần khác biệt của tập hợp thứ hai so với tập hợp thứ nhất.
  1. Kết hợp hai hiệu này.

Trước tiên, hãy tạo hai HashSet:

HashSet<Integer> set1 = new HashSet<>();
set1.add(1);
set1.add(2);
set1.add(3);

HashSet<Integer> set2 = new HashSet<>();
set2.add(2);
set2.add(3);
set2.add(4);

Tiếp theo, hãy tính từng hiệu đối xứng một chiều:

HashSet<Integer> diff1 = new HashSet<>(set1);
diff1.removeAll(set2);  // diff1 là [1]
HashSet<Integer> diff2 = new HashSet<>(set2);
diff2.removeAll(set1);  // diff2 là [4]

Tiếp theo, hãy kết hợp hai hiệu.

diff1.addAll(diff2);  // diff1 là [1, 4]
challenge icon

Thử thách

Dễ

Tạo một phương thức (method) có tên symmetricDifference, nhận đầu vào là hai HashSet chứa số nguyên, tính hiệu đối xứng của chúng và in kết quả theo định dạng:

Symmetric Difference: [elements]

Tự làm thử

import java.util.HashSet;
import java.util.Scanner;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;

public class Main {
    public static void symmetricDifference(HashSet<Integer> set1, HashSet<Integer> set2) {
        // Viết code của bạn ở đây
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // Đọc chuỗi JSON cho tập hợp (set) thứ nhất (ví dụ: [1,2,3])
        String set1String = scanner.nextLine();
        // Đọc chuỗi JSON cho tập hợp thứ hai (ví dụ: [2,3,4])
        String set2String = scanner.nextLine();

        Type setType = new TypeToken<HashSet<Integer>>(){}.getType();
        HashSet<Integer> set1 = new Gson().fromJson(set1String, setType);
        HashSet<Integer> set2 = new Gson().fromJson(set2String, setType);

        symmetricDifference(set1, set2);
    }
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch Java online