从字符串arraylist中获取已删除和添加的元素

时间:2013-05-07 11:24:20

标签: java arraylist

我有一个字符串arraylist ListA包含值{a,b,c,d}。我做了一些操作,而ListA现在包含了{b,c,e}

我必须找出从ListA中删除了所有元素的内容,即ad以及添加了所有元素,即e

请帮忙。我是Java的新手,我坚持这个。

4 个答案:

答案 0 :(得分:4)

你实际上有3种选择我可以建议。

  1. 有一个referenceList,您可以在修改后比较ListA,以便列出添加/删除的元素。

      
        

    请参阅Noob UnChained的示例代码答案。

      
  2. 而不是使用Arraylist,扩展它并覆盖remove()& Noob UnChained方法添加(确保你持久调用super()以防万一)逻辑来存储被删除/添加的元素。

      
        

    请参阅Evgeniy Dorofeev的示例代码答案。

      
  3. 而不是直接调用add()/remove()写入实用程序方法,然后调用add()/remove()并将该元素从相应的add()/remove()&存储到addedListremovedList

答案 1 :(得分:3)

在进行任何修改之前,您需要使用临时ArrayList,这是您的初始arraylist。

然后你需要用一个新的arraylist进行循环并比较和提取并等等......等等......

只能使用程序化完成。没有任何直接的方法来找到这个。


请参阅更新

public class ListTracAddedAndRemoved {

public static void main(String[] args) {
ArrayList<String> old = new ArrayList<String>();
old.add("a");
old.add("b");
old.add("c");

ArrayList<String> newOne = new ArrayList<String>();
newOne.add("b");
newOne.add("d");
newOne.add("e");

ArrayList<String> removed = new ArrayList<String>();
for (String oldString : old) {
    if(!newOne.contains(oldString)){
    removed.add(oldString);
    }
}

ArrayList<String> newAdded = new ArrayList<String>();
for (String newString : newOne) {
    if(!old.contains(newString)){
    newAdded.add(newString);
    }
}

System.out.println("Removed: "+removed.toString());
System.out.println("NewAdded: "+newAdded.toString());
}
}

答案 2 :(得分:1)

示例代码,您可以使用它来创建更好的解决方案:

// your initial list
List<String> oldList = new ArrayList<String>();
// new List , which you will manipulate
List<String> newList = new ArrayList<String>(oldList);

// add , remove elements from the newList

for(String element:oldList){
    if(!newList.contains(element)){
        System.out.println("New list has removed :"+element);
    }
}

for(String element:newList){
    if(!oldList.contains(element)){
        System.out.println("New list has added :"+element);
    }
}

答案 3 :(得分:1)

您可以像这样制作自定义版本的

class TestList implements List {
    List list = new ArrayList();
    List added = new ArrayList();
    List removed = new ArrayList();
    public void add(int index, Object element) {
        added.add(e);
        list.add(index, element);
    }
    public Object remove(int index) {
        removed.add(get(index));
        return list.remove(index);
    }
    ...
    public List getAdded() {
        return added;
    }
    public List getRemoved() {
        return removed;
    }