Javaで2つのSetの和集合を求める方法|addAllメソッドの使い方を解説
本記事では、2つのセット(Set)の和集合を計算する方法について詳しく解説します。Setとは、重複する要素を格納できないCollectionの一種で、数学における「集合」の抽象概念をモデル化したものです。SetインターフェースはCollectionから継承したメソッドのみを持ち、そこに「重複要素の追加を禁止する」という制約が加わっています。
以下に実際の動作例を示します。
入力例:
1つ目のセット: [2, 4] 2つ目のセット: [1, 3]
期待される出力:
2つのセットの和集合は: [1, 2, 3, 4]
アルゴリズム
ステップ1 - 開始 ステップ2 - 必要な変数を宣言する ステップ3 - 値を定義する ステップ4 - 2つのSetを作成し、「add」メソッドで要素を追加する ステップ5 - 各セットの内容をコンソールに表示する ステップ6 - 「addAll」メソッドを使って2つのセットを結合する ステップ7 - 和集合の結果をコンソールに表示する ステップ8 - 終了
例1
ここでは、すべての処理をmain関数内にまとめて記述する手続き的なスタイルで実装します。
import java.util.HashSet;
import java.util.Set;
public class Demo {
public static void main(String[] args) {
System.out.println("必要なパッケージがインポートされました");
Set<Integer> input_set_1 = new HashSet<>();
input_set_1.add(2);
input_set_1.add(4);
System.out.println("1つ目のセット: " + input_set_1);
Set<Integer> input_set_2 = new HashSet<>();
input_set_2.add(1);
input_set_2.add(3);
System.out.println("2つ目のセット: " + input_set_2);
input_set_2.addAll(input_set_1);
System.out.println("\n2つのセットの和集合は: \n" + input_set_2);
}
}出力
必要なパッケージがインポートされました 1つ目のセット: [2, 4] 2つ目のセット: [1, 3] 2つのセットの和集合は: [1, 2, 3, 4]
例2
こちらでは、和集合を求める処理を独立した関数として切り出し、オブジェクト指向プログラミングのスタイルで実装します。
import java.util.HashSet;
import java.util.Set;
public class Demo {
static void union_sets(Set<Integer> input_set_1, Set<Integer> input_set_2){
input_set_2.addAll(input_set_1);
System.out.println("\n2つのセットの和集合は: \n" + input_set_2);
}
public static void main(String[] args) {
System.out.println("必要なパッケージがインポートされました");
Set<Integer> input_set_1 = new HashSet<>();
input_set_1.add(2);
input_set_1.add(4);
System.out.println("1つ目のセット: " + input_set_1);
Set<Integer> input_set_2 = new HashSet<>();
input_set_2.add(1);
input_set_2.add(3);
System.out.println("2つ目のセット: " + input_set_2);
union_sets(input_set_1, input_set_2);
}
}出力
必要なパッケージがインポートされました 1つ目のセット: [2, 4] 2つ目のセット: [1, 3] 2つのセットの和集合は: [1, 2, 3, 4]
ポイント解説
和集合の計算にはaddAll()メソッドを使用します。このメソッドは、引数に渡したコレクションのすべての要素を呼び出し元のセットに追加します。Setは重複を許さないため、両方のセットに共通して存在する要素は自動的に1つだけ残り、結果として和集合が得られます。
なお、HashSetは要素の順序を保証しないため、出力順序が実行環境によって異なる場合があります。挿入順を保持したい場合はLinkedHashSet、要素を常にソートされた状態で管理したい場合はTreeSetを使用するとよいでしょう。
-
Javaで2つのSetをマージする方法【サンプルコード付き】
Javaで2つのセット(Set)を1つにマージ(結合)する方法を解説します。ここでは、Stream APIとaddAllメソッドを組み合わせた基本的なアプローチを紹介し、あわせてより簡潔に書ける代替手段も取り上げます。 コード例 import java.util.stream.*; import java.util.*; import java.io.*; public class Demo { public static <T> Set<T> set_merge(Set<T> set_1, Set<T> set_2) {
-
複利を計算するJavaプログラム
この記事では、Javaを使って複利を計算するプログラムを紹介します。複利とは、元本だけでなく発生した利息に対してもさらに利息がつく計算方式のことで、次の数式で求められます。複利 = 元本 × (1 + 年利率 ÷ 100)期間サンプルコードimport java.io.*; public class Demo{ public static void main(String args[]){ double princ = 456000, rt = 9.75, tm = 7; double comp_int = princ * (Math.pow((1 +