131

セットを作成する非常に簡単な方法を探しています。

Arrays.asList("a", "b" ...)を作成しますList<String>

に似たものはありSetますか?

4

10 に答える 10

110

Java 8 では、サードパーティのフレームワークを必要とせずにこれを行うことができます。

Set<String> set = Stream.of("a","b","c").collect(Collectors.toSet());

コレクターを参照してください。

楽しみ!

于 2016-12-23T16:46:33.860 に答える
68

Guavaを使用すると、次のように簡単です。

Set<String> mySet = ImmutableSet.<String> of("a", "b");

または変更可能なセットの場合:

Set<String> mySet = Sets.newHashSet("a", "b")

その他のデータ型については、Guava ユーザー ガイドを参照してください。

于 2013-05-03T12:24:55.830 に答える
58

あなたが使用することができます

new HashSet<String>(Arrays.asList("a","b"));
于 2013-05-03T12:21:31.257 に答える
26

0 個または 1 個のメンバーを持つセットの特殊なケースでは、次を使用できます。

java.util.Collections.EMPTY_SET

と:

java.util.Collections.singleton("A")
于 2015-01-15T16:20:42.130 に答える
21

他の人が言ったように、次を使用します。

new HashSet<String>(Arrays.asList("a","b"));

これがJava に存在しない理由Arrays.asListは、固定サイズのリストを返すためです。つまり、次のようになります。

public static void main(String a[])
{
  List<String> myList = Arrays.asList("a", "b");
  myList.add("c");
}

戻り値:

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(Unknown Source)
    at java.util.AbstractList.add(Unknown Source)

クラスSet内に「固定サイズ」の JDK 実装はありません。Arraysなぜこれが欲しいのですか?ASetは重複がないことを保証しますが、手動で入力する場合は、その機能は必要ありません...そしてListより多くのメソッドがあります。両方のインターフェイスが と を拡張CollectionIterableます。


他の人が言ったように、この機能が本当に必要な場合は、グアバを使用してください-JDKにないためです。それに関する情報については、彼らの回答(特にMichael Schmeißerの回答)を見てください。

于 2013-05-03T12:28:30.577 に答える
4

いいえ、しかし、あなたはこのようにすることができます

new HashSet<String>(Arrays.asList("a", "b", ...));
于 2013-05-03T12:22:16.017 に答える
3

グアバでは、使用できます

Set<String> set = Sets.newHashSet("a","b","c");

新しいハッシュセット

于 2013-05-03T12:27:21.287 に答える