有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中有效地比较两个列表<Object[]>

我有两个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]]

list1Object数组中第二列到第五列元素的组成可能与list2Object数组中的元素匹配。当所有这些列都匹配时,不应在新的List中重复该操作。或者,不使用新列表,我可以只更新list1本身的内容。如果list2list1没有的独特的东西,我将把它添加到列表中。不幸的是,我的程序的输出只会导致List<Object[]>。有人能告诉我怎样才能有效地进行比较吗


共 (1) 个答案

  1. # 1 楼答案

    数组没有equalshashcode方法,但是List有,所以可以使用List作为HashMap的键

    编写一个方法来生成一个List<Object>用作密钥:

    • 对于5元素列表,它将是new ArrayList(array).subList(1,array.length)
    • 对于4元素列表,它将是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现在包含所需的数组