在java中创建一组数组
我想做点什么
Set strSet = new HashSet ();
有一种简单的方法可以用Java创建一组数组,还是我必须编写自己的实现代码? 将对象添加到Set使用equals()检查Object,这对数组不起作用。
数组不会覆盖equals
和hashCode
,因此HashSet
将仅基于引用相等性来比较它们。 考虑使用List
代替:
Set> strSet = new HashSet>();
从List.equals
文档:
当且仅当指定的对象也是列表时,返回
true
,两个列表具有相同的大小,并且两个列表中的所有对应元素对都相等 。
使用Set
。 您可以根据需要使用>
Arrays.asList
和List.toArray
进行转换。
如果你真的需要Set
,那么AFAICT就没有简单而优雅的方法。 问题是数组一方面不会覆盖equals()
和hashCode()
。 另一方面, HashSet
类不提供向其传递一些“策略”的可能性,该策略将在外部实现哈希码和相等计算(类似于Comparator
)。 因此,您可以考虑使用自定义比较器创建TreeSet
。 不幸的是,我不知道arrays比较器的任何实现,所以很可能你需要编写自己的。
如果您可以使用Set
,则可以在其他答案中考虑建议。 >