部分集合と超集合
CoddyのJavaジャーニー「ロジックとフロー」セクションの一部。レッスン 33/59。
部分集合とは、すべての要素が別の集合にも含まれている集合です。上位集合とは、別の集合のすべての要素を含む集合です。
まず、2つのHashSetを作成します。
HashSet<String> setA = new HashSet<>();
setA.add("apple");
setA.add("banana");
HashSet<String> setB = new HashSet<>();
setB.add("apple");
setB.add("banana");
setB.add("cherry");containsAll()メソッドを使用します。
boolean isSubset = setB.containsAll(setA);
System.out.println("setA is a subset of setB: " + isSubset);
// 出力: setA is a subset of setB: true同様に、setBはsetAのすべての要素を含んでいるため、setAのスーパーセットです。
チャレンジ
簡単checkSubsetSupersetという名前のメソッドを作成し、入力として2つの文字列のHashSetを受け取るようにします。
- setAとsetB
このメソッドでは、次の処理を行います。
containsAll()を使ってsetAがsetBの部分集合かどうかを確認し、次のように出力します。setA is a subset of setB: <true/false>setBがsetAの上位集合かどうかを確認します(これは同じ確認です)。そして、次のように出力します。
setB is a superset of setA: <true/false>
自分で試してみよう
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 checkSubsetSuperset(HashSet<String> setA, HashSet<String> setB) {
// ここにコードを書いてください
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// setA 用の JSON 文字列を読み込む(例: ["apple","banana"])
String setAString = scanner.nextLine();
// setB 用の JSON 文字列を読み込む(例: ["apple","banana","cherry"])
String setBString = scanner.nextLine();
Type setType = new TypeToken<HashSet<String>>(){}.getType();
HashSet<String> setA = new Gson().fromJson(setAString, setType);
HashSet<String> setB = new Gson().fromJson(setBString, setType);
checkSubsetSuperset(setA, setB);
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Javaオンラインコンパイラ