セットを作成する非常に簡単な方法を探しています。
Arrays.asList("a", "b" ...)
を作成しますList<String>
に似たものはありSet
ますか?
セットを作成する非常に簡単な方法を探しています。
Arrays.asList("a", "b" ...)
を作成しますList<String>
に似たものはありSet
ますか?
Java 8 では、サードパーティのフレームワークを必要とせずにこれを行うことができます。
Set<String> set = Stream.of("a","b","c").collect(Collectors.toSet());
コレクターを参照してください。
楽しみ!
Guavaを使用すると、次のように簡単です。
Set<String> mySet = ImmutableSet.<String> of("a", "b");
または変更可能なセットの場合:
Set<String> mySet = Sets.newHashSet("a", "b")
その他のデータ型については、Guava ユーザー ガイドを参照してください。
あなたが使用することができます
new HashSet<String>(Arrays.asList("a","b"));
0 個または 1 個のメンバーを持つセットの特殊なケースでは、次を使用できます。
java.util.Collections.EMPTY_SET
と:
java.util.Collections.singleton("A")
他の人が言ったように、次を使用します。
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
より多くのメソッドがあります。両方のインターフェイスが と を拡張Collection
しIterable
ます。
他の人が言ったように、この機能が本当に必要な場合は、グアバを使用してください-JDKにないためです。それに関する情報については、彼らの回答(特にMichael Schmeißerの回答)を見てください。
いいえ、しかし、あなたはこのようにすることができます
new HashSet<String>(Arrays.asList("a", "b", ...));