/**
* Handy conversion to set
*/
public class SetUtil {
/**
* Convert some items to a set
* @param items items
* @param <T> works on any type
* @return a hash set of the input items
*/
public static <T> Set<T> asSet(T ... items) {
return Stream.of(items).collect(Collectors.toSet());
}
}
final Set s = new HashSet<Object>();
for (Object o : a) { s.add(o); }
0
执行 Arrays.asList(array) 后,您可以执行 Set set = new HashSet(list);
这是一个示例方法,您可以编写:
public <T> Set<T> GetSetFromArray(T[] array) {
return new HashSet<T>(Arrays.asList(array));
}
187
像这样:
Set<T> mySet = new HashSet<T>(Arrays.asList(someArray));
在Java 9中,如果不可修改的设置是可以的:
Set<T> mySet = Set.of(someArray);
在Java 10中,可以从数组组件类型推断泛型类型参数:
var mySet = Set.of(someArray);
6
快点:你可以这样做:
// Fixed-size list
List list = Arrays.asList(array);
// Growable list
list = new LinkedList(Arrays.asList(array));
// Duplicate elements are discarded
Set set = new HashSet(Arrays.asList(array));
并扭转
// Create an array containing the elements in a list
Object[] objectArray = list.toArray();
MyClass[] array = (MyClass[])list.toArray(new MyClass[list.size()]);
// Create an array containing the elements in a set
objectArray = set.toArray();
array = (MyClass[])set.toArray(new MyClass[set.size()]);
16 回答
我从上面的建议中写下了以下内容 - 偷了它......真好!
Java 8:
Varargs也会工作!
输出是
改为
输出是
从
stanford-postagger-3.0.jar
使用CollectionUtils
或ArrayUtils
使用Guava,您可以:
这是来自JDK 6的Collections.addAll(java.util.Collection, T...) .
另外:如果我们的数组充满原语怎么办?
对于JDK <8,我只会编写明显的
for
循环来在一次传递中执行换行和添加 .对于JDK> = 8,一个有吸引力的选项是这样的:
在 Java 10 :
Set.copyOf返回一个不可修改的
Set
,其中包含给定Collection
的元素 .给定的
Collection
不能是null
,并且它不能包含任何null
元素 .在 Java 8 中,我们也可以选择使用
Stream
. 我们可以通过各种方式获得流:Collectors.toSet()
的源代码显示元素逐个添加到HashSet
,但规范并不保证它将是HashSet
.所以最好使用后面的选项 . 输出是:
[A, B, C, D] [A, B, C, D] [A, B, C, D]
有时使用一些标准库有很大帮助 . 试着看看Apache Commons Collections . 在这种情况下,您的问题只是转变为这样的事情
这是CollectionsUtils javadoc
在Eclipse Collections中,以下内容将起作用:
注意:我是Eclipse Collections的提交者
new HashSet<Object>(Arrays.asList(Object[] a));
但我认为这会更有效:
执行
Arrays.asList(array)
后,您可以执行Set set = new HashSet(list);
这是一个示例方法,您可以编写:
像这样:
在Java 9中,如果不可修改的设置是可以的:
在Java 10中,可以从数组组件类型推断泛型类型参数:
快点:你可以这样做:
并扭转