在java中创建一组数组

我想做点什么

Set  strSet = new HashSet  (); 

有一种简单的方法可以用Java创建一组数组,还是我必须编写自己的实现代码? 将对象添加到Set使用equals()检查Object,这对数组不起作用。

数组不会覆盖equalshashCode ,因此HashSet将仅基于引用相等性来比较它们。 考虑使用List代替:

 Set> strSet = new HashSet>(); 

List.equals文档:

当且仅当指定的对象也是列表时,返回true ,两个列表具有相同的大小,并且两个列表中的所有对应元素对都相等

使用Set> 。 您可以根据需要使用Arrays.asListList.toArray进行转换。

如果你真的需要Set ,那么AFAICT就没有简单而优雅的方法。 问题是数组一方面不会覆盖equals()hashCode() 。 另一方面, HashSet类不提供向其传递一些“策略”的可能性,该策略将在外部实现哈希码和相等计算(类似于Comparator )。 因此,您可以考虑使用自定义比较器创建TreeSet 。 不幸的是,我不知道arrays比较器的任何实现,所以很可能你需要编写自己的。

如果您可以使用Set> ,则可以在其他答案中考虑建议。