1
2
听起来您需要一个Linkedhashset(在保持唯一性的同时保留插入顺序),然后将数组包装在一个实现哈希代码和相等的对象中,这样对数组来说是有意义的。第一个近似值可能只是arrays.aslist()方法,但您在问题中声明正在对象[]数组中使用基元。或者您依赖于自动氧化,或者您实际上没有使用对象[]数组,而是根据需要使用int[]、long[]、float[]。array.aslist()无法正确地处理这些类型。 编辑:根据注释的请求,这里是包装类的代码:
|
2
2
问题是你会有arrayx和arrayy,两者都有内容[a,b,c],但是集合不把它们视为相等的吗?[a,b,c]和[c,a,b]是否被视为相等? 我要说的是定义一个比较器,它为数组定义了“相等”的定义,这正是您需要它定义的方式,然后将每个数组插入到使用您创建的自定义比较器的集合中。 |
3
1
如果散列代码相同,则只需进一步检查其详细信息。 |
4
1
尝试如下操作: 编辑 运行和工作代码如下:
如您所知,集合只接受一个元素,并创建
|
5
1
下面假设您认为数组1,2,3和3,2,1不重复。 不要将数组的哈希代码存储到集合中,而是将整个列表存储到集合中。 将数组转换为 List S.清单一致 equals 和 hashCode 方法。 如果两个列表包含的元素顺序相同,则将它们定义为相等 ,列表的哈希代码将与equals方法一致。
这是整个算法。 (未测试的代码,但应该有效)。
|
6
0
为了有效地进行比较,有时使用两个步骤的方法:
关于你
要保留基元类型,数组本身必须是基元类型,例如
|
redcodefinal · 用另一个整数哈希一个整数[closed] 9 年前 |