哪个列表管理最佳算法?

时间:2014-06-18 08:43:22

标签: java algorithm

我正在努力使用一种算法。我想在第二个列表中汇总的数据中对当前列表执行一些操作(更新,删除,添加元素)。

我的第一个列表currentList和提交的列表submittedList

我必须解决的问题是:

  1. 如果currentList的元素在submittedList中,则必须在currentList
  2. 中更新此元素
  3. 如果currentList的元素不在submittedList中,则必须从currentList中删除此元素
  4. 必须将currentList中不在currentList中的所有元素添加到currentList
  5. 如果你能提供帮助,谢谢

2 个答案:

答案 0 :(得分:1)

以不同的方式思考。您需要currentList只在submittedList中包含对象,但只需修改对象(如果它在两个列表中都存在)。所以你的算法只有两个步骤。

我的建议是使用临时名单。我在下面添加了一个解决方案,假设列表中的对象是字符串。 (您可以将String替换为自定义对象)

List<String> tempList = new ArrayList<String>();
for(String test : submittedList) {
    if(currentList.contains(test)) {
        String test1 = test+"xyz"; // do modification to test String
        tempList.add(test1);
    } else {
        tempList.add(test);
    }
}
currentList.clear(); // Now add to the actual list after clearing
currentList.addAll(tempList);

答案 1 :(得分:0)

如果可以,请对两个列表进行排序。然后按递增顺序扫描它们:从cs读取第一个元素currentListsubmittedList。如果c==s,请更新c并获取下一个cs;如果c<s(意味着c不在submittedList中),则从c放弃currentList并获取下一个c;如果c>s(意味着s不在currentList中),请在s中插入currentList并获取下一个s。等等。

当其中一个列表用尽时,请继续执行规则c<**>s。当两个列表都用完时停止。