我有两个List<Object[]>
,我需要比较其中的值,并创建一个只有唯一值的最终列表。
前:
List<Object[]> list1 has n rows of object list with 5 columns
[[val1,val2,val3,val4,val5],[val1_,val2_,val3_,val4_,val5_]]
List<Object[]> list2 has n rows of Object list with 4 columns
[[val3_,val4_,val5_,val6_],[val2,val3,val4,val5]]
Object
中list1
数组中第二至第五列元素的组合可能与Object
中list2
数组中的元素匹配。当所有这些列匹配时,不应在新List
中重复这些列。或者,我可以只更新list1
本身的内容,而不是使用新列表。如果list2
具有list1
没有的唯一内容,我会将其添加到列表中。不幸的是,我的程序输出只会导致List<Object[]>
。有人可以告诉我如何有效地完成这种比较吗?
答案 0 :(得分:0)
数组没有equals
或hashcode
方法,但List
方法有,所以您可以使用List
作为HashMap
的键}。
编写一种方法来生成List<Object>
以用作关键字:
new ArrayList(array).subList(1,array.length)
new ArrayList(array)
然后:
Map map = new HashMap<List<Object>, Object[]>();
for(array : fourColumnArrays) {
map.put( keyForFourElements(array), array);
}
for(array : fiveColumnArrays) {
map.put( keyForFiveColumnArrays(array), array);
}
map
现在包含您需要的数组。