我有一个包含以下示例数据的电子表格。
在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”列,然后用“优先复制”行的ID替换“劣质复制品”的ID列。
因此,第4行的重复ID需要填充82046555,第4行的ID需要替换为82046565.第2,3行不会发生任何变化。
我需要使用哪些数据结构?我尝试了下面的代码,但我无法在列表中获得重复项。
任何指针都将非常感激。
List<ArrayList<MergeObject>> superDuperList = new ArrayList<ArrayList<MergeObject>>();
//使用JXL,在循环中,我将行填充到名为saoList的arraylist中。 列出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;
}
}
}
答案 0 :(得分:0)
我能想到的一件事就是排序。
在MergeObject上实现Comparator接口将为您提供一个排序列表。因此,所有重复元素将组合在一起。看看这对你有帮助。