我有一个包含以下示例数据的电子表格。Java根据条件查找重复项并覆盖/更新重复对象中的部分数据
在Java中,使用JXL,我将数据读入名为MergeObject.java自定义对象。这个类是一个简单的POJO,其中有列映射到电子表格中的标题。阅读电子表格后,我有一个合并对象的Arraylist。
我不想使用一组,因为我想保留副本。我想循环列表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。 List 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;
}
}
}
你能否澄清一下'saoList'在这里?我看到你正在循环它,但我没有看到它的声明或任何地方的任务。 –
你能提供你的完整代码,并且你是否尝试调试你的代码,看看为什么不删除重复项? –
@AmitK是的,我试着调试我的代码。首先,我不是100%确定阵列阵列的数据结构是否是正确的选择。 – user972391