Skip to content
閲覧中:
mapに関するmethod

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(辞書形式)に変換したい」などの、もう一歩踏み込んだ応用例も見てみますか?