mapに関するmethod
「関数」という言葉が、「Setに備わっているメソッド(機能)」**のことか、あるいは **「Java 8以降の関数型プログラミング(Stream APIなど)」 のことか、どちらでも対応できるように整理して解説しますね。
1. Setの主要メソッド(機能)¶
Set特有の「重複を許さない」「集合演算ができる」という特徴を活かしたコードです。
Java
import java.util.*;
Set<String> fruits = new HashSet<>();
// --- 追加と重複のブロック ---
fruits.add("Apple");
fruits.add("Banana");
boolean added = fruits.add("Apple"); // 重複しているのでfalseが返り、追加されない
// --- 存在チェック (Listより圧倒的に高速) ---
if (fruits.contains("Apple")) {
System.out.println("Appleは含まれています");
}
// --- まとめて操作 (集合演算) ---
Set<String> otherFruits = Set.of("Cherry", "Apple");
// 差集合:otherFruitsに含まれるものを削除
fruits.removeAll(otherFruits); // Appleが消える
// 和集合:すべて追加
fruits.addAll(otherFruits); // Apple, Banana, Cherry になる
2. Setで使える「関数型」の書き方¶
Java 8から導入された、ラムダ式やStreamを使ったモダンな書き方です。
Java
Set<String> tags = new HashSet<>(Arrays.asList("java", "python", "javascript", "ruby"));
// --- removeIf : 条件に合うものを一括削除 ---
// 1文字目が 'j' で始まるタグをすべて消す
tags.removeIf(tag -> tag.startsWith("j"));
// --- forEach : 関数的な繰り返し処理 ---
tags.forEach(tag -> System.out.println("Tag: " + tag));
// --- Stream API : 加工して別の形へ ---
// 全て大文字にして、新しいListを作る
List<String> upperTags = tags.stream()
.map(String::toUpperCase)
.sorted()
.toList(); // Java 16+ の書き方
3. 特殊なSetの「関数(メソッド)」¶
使うSetのクラスによって、便利な専用メソッドがあります。
- TreeSet (ソート済みSet)
first()/last(): 最小値・最大値を取得。-
higher(e)/lower(e): 指定した値より大きい/小さい直近の値を検索。 -
LinkedHashSet (順序維持Set)
- 追加した順番を守ってくれるため、
forEachで取り出す際に順番が固定されます。
まとめ:Setを使うべき「関数(シチュエーション)」¶
| やりたいこと | 使うべきメソッド |
|---|---|
| ダブりを取り除きたい | addAll(collection) |
| あるか無いか爆速で調べたい | contains(element) |
| 共通部分だけ残したい | retainAll(otherSet) |
| 条件に合うものを一括で消したい | removeIf(s -> ...) |
「このSetの中身を使って、Map(辞書形式)に変換したい」などの、もう一歩踏み込んだ応用例も見てみますか?