我有一个字符串arraylist ListA
包含值{a,b,c,d}
。我做了一些操作,而ListA
现在包含了{b,c,e}
我必须找出从ListA
中删除了所有元素的内容,即a
和d
以及添加了所有元素,即e
。
请帮忙。我是Java的新手,我坚持这个。
答案 0 :(得分:4)
你实际上有3种选择我可以建议。
有一个referenceList,您可以在修改后比较ListA,以便列出添加/删除的元素。
请参阅Noob UnChained的示例代码答案。
而不是使用Arraylist
,扩展它并覆盖remove()
& Noob UnChained方法添加(确保你持久调用super()以防万一)逻辑来存储被删除/添加的元素。
请参阅Evgeniy Dorofeev的示例代码答案。
而不是直接调用add()/remove()
写入实用程序方法,然后调用add()/remove()
并将该元素从相应的add()/remove()
&存储到addedList
。 removedList
答案 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;
}