Java根据条件查找重复项并覆盖/更新重复对象中的部分数据

我有一个电子表格,下面的示例数据。

数据样本

在Java中,使用jxl,我将数据读入一个名为MergeObject.java的自定义对象。 这个类是一个简单的POJO,带有到电子表格中的标题的列映射。 阅读电子表格后,我有一个MergeObjects的Arraylist。

我不想使用Set,因为我想保留重复项。 我想循环列表arraylist并找出列表中的重复项。 为了符合重复条件,两个条目需要具有相同的名字和姓氏。 例如,行2,3,4是重复的,行5,6是重复的,行7,8是重复的。 我已经重写了equals方法来定义这个。

这是我的问题。 在确定了重复的行集合(2,3,4),(5,6),(7,8)之后,我将定义哪一行是优先的。 例如,我可能会认为具有“正常评论”的评论部分可能是上级副本。 确定之后,我想用它的ID值填充“下级副本”的“重复ID”列,然后用“上级副本”行IDreplace“下级副本”的ID列。

因此,第4行的重复ID需要用82046555填充,第4行的ID需要用82046565replace。2,3行根本不会改变。

我需要使用哪些数据结构? 我尝试了下面的代码,但是我无法获得列表中的重复项。

任何指针将不胜感激。

List<ArrayList<MergeObject>> superDuperList = new ArrayList<ArrayList<MergeObject>>(); 

//使用JXL,在一个循环中,我将行填入了一个名为saoList的数组列表。 列表saoList = new ArrayList();

  ArrayList<MergeObject> innerList = new ArrayList<MergeObject>(); MergeObject lastItem = null; for (MergeObject item : saoList) { if(null == lastItem) { innerList.add(item); lastItem = item; } else { if(item.equals(lastItem)) { innerList.add(item); } else { superDuperList.add(innerList); innerList = new ArrayList<MergeObject>(); innerList.add(item); lastItem = item; } } } 

有一件事我可以想象你的情况是sorting。

在MergeObject上实现Comparator接口会给你一个sorting列表。 所以所有重复的元素将被分组在一起。 看看这是否有助于你。