Matematyka — różnica symetryczna
Część sekcji Logika i przepływ sterowania ścieżki Java w Coddy. Lekcja 32 z 59.
Różnica symetryczna dwóch zbiorów to nowy zbiór zawierający elementy należące do jednego lub drugiego zbioru, ale nie do obu. W Javie możesz ją obliczyć w następujący sposób:
- Znajdowanie różnicy pierwszego zbioru względem drugiego.
- Znajdowanie różnicy drugiego zbioru względem pierwszego.
- Połączenie tych dwóch różnic.
Najpierw utwórz dwa obiekty 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);Następnie oblicz każdą różnicę jednostronną:
HashSet<Integer> diff1 = new HashSet<>(set1);
diff1.removeAll(set2); // diff1 zawiera [1]
HashSet<Integer> diff2 = new HashSet<>(set2);
diff2.removeAll(set1); // diff2 zawiera [4]Następnie połącz obie różnice:
diff1.addAll(diff2); // diff1 zawiera [1, 4]Wyzwanie
ŁatwyUtwórz metodę o nazwie <strong>symmetricDifference</strong>, która przyjmuje jako dane wejściowe dwa zbiory HashSet liczb całkowitych, oblicza ich różnicę symetryczną i wyświetla ją w formacie:
Symmetric Difference: [elements]Spróbuj swoich sił
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) {
// Wpisz tutaj swój kod
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Wczytaj ciąg znaków JSON dla pierwszego zbioru (np. [1,2,3])
String set1String = scanner.nextLine();
// Wczytaj ciąg znaków JSON dla drugiego zbioru (np. [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);
}
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DDodawanie i odejmowanie macierzyTablice postrzępioneTablice 3D i większeTypowe wzorce dla tablic 2DPodsumowanie — wszystko o tablicach2HashMap część 1
Czym jest HashMap?Deklarowanie HashMapDostęp do wartościSprawdzanie, czy klucz istniejeModyfikowanie słownikówPodsumowanie — HashMap5HashSet — część 2
Matematyka — suma zbiorów HashSetMatematyka — część wspólna zbiorów HashSetMatematyka — różnica zbiorówMatematyka — różnica symetrycznaPodzbiory i nadzbioryIterowanie po zbiorach3HashMap — część 2
Metody HashMapIterowanie za pomocą keySet()Iterowanie za pomocą entrySet()Zagnieżdżona HashMapPowtórka — zarządzanie magazynemPowtórka — operacje na HashMap6Zaawansowany przepływ sterowania
Instrukcje etykietująceWyrażenie switchDopasowywanie wzorcówKlauzule ochronnePowtórzenie — przepływ sterowania9Projekt — licznik unikalnych słów
Wprowadzanie i przechowywanie tekstuPrzetwarzanie słówPoćwicz samodzielnie: Kompilator Java online