.asSet(…)是否存在于任何API中?
我正在寻找一个非常简单的方法来创build一个集合。
Arrays.asList("a", "b" ...)
创build一个List<String>
有什么类似的Set
?
现在用Java 8,你可以做到这一点,而不需要第三方框架:
Set<String> set = Stream.of("a","b","c").collect(Collectors.toSet());
见collections家 。
请享用!
使用番石榴 ,它是这样简单:
Set<String> mySet = ImmutableSet.<String> of("a", "b");
或者对于一个可变集合:
Set<String> mySet = Sets.newHashSet("a", "b")
有关更多数据types,请参阅Guava用户指南
你可以使用
new HashSet<String>(Arrays.asList("a","b"));
正如其他人所说,使用:
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)
Arrays
类中没有“固定大小” Set
JDK实现。 你为什么要这个? 一个Set
保证没有重复,但如果你手动input它们,你不应该需要的function…和List
有更多的方法。 这两个接口都扩展了Collection
和Iterable
。
正如其他人所说,使用番石榴如果你真的想要这个function – 因为它不在JDK中。 看看他们的答案(特别是MichaelSchmeißer的回答)以获取有关信息。
对于零个或一个成员的特殊情况,您可以使用:
java.util.Collections.EMPTY_SET
和:
java.util.Collections.singleton("A")
不,但你可以这样做
new HashSet<String>(Arrays.asList("a", "b", ...));
在番石榴,你可以使用
Set<String> set = Sets.newHashSet("a","b","c");
newHashSet
这里有一个你可以使用的方法
/** * Utility method analogous to {@link java.util.Arrays#asList(Object[])} * * @param ts * @param <T> * @return the set of all the parameters given. */ @SafeVarargs @SuppressWarnings("varargs") public static <T> Set<T> asSet(T... ts) { return new HashSet<>(Arrays.asList(ts)); }