我有一个包含值的字符串数组ListA
列表,比如说{a,b,c,d}
。我做了一些操作,ListA
现在包含,比如说,{b,c,e}
我必须找出已从ListA
ie中删除的所有元素a
以及d
已添加的所有元素 ie e
。
请帮忙。我是 Java 新手,我坚持这一点。
你实际上有我可以建议的 3 个选项。
有一个referenceList,您可以从中比较修改后的ListA,以便您可以列出添加/删除的元素。
有关示例代码,请参阅 Noob UnChained 的答案。
而不是使用Arraylist
,扩展它并覆盖remove()
& Noob UnChained 方法来添加(确保你坚持调用 super() 以防万一)逻辑来存储被删除/添加的元素。
有关示例代码,请参阅 Evgeniy Dorofeev 的答案。
而不是直接调用add()/remove()
Write 实用程序方法,该方法将依次调用add()/remove()
并将该元素存储到add()/remove()
相应的addedList
&removedList
您需要使用临时 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());
}
}
您可以像这样制作自定义版本的 List
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;
}
示例代码,您可以使用它来制定更好的解决方案:
// 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);
}
}