Java:2个列表包含不同顺序的相同元素 - 如何删除相同的元素?

时间:2015-09-14 18:10:40

标签: java list arraylist

我遇到这种情况:

List<MyClass> list_1 = new ArrayList<>();
List<MyClass> list_2 = new ArrayList<>();
list_1.add(elements...);
list_2.add(same elements...);
mixList(list_1);  //mixing the inner order between the elements
mixList(list_2);
MyClass mClass = list_1.get(5);  //for example place 5 
//TODO: How to remove above element who is exist
//in list_2 also, from list_2?

注意 - 它也是相同的元素,但它们不是同一个对象:

//same elements, different objects
MyClass m1 = new MyClass("name", 1);
MyClass m2 = new MyClass("name", 1);

1 个答案:

答案 0 :(得分:1)

问题1:

//same elements, different objects
MyClass m1 = new MyClass("name", 1);
MyClass m2 = new MyClass("name", 1);

要识别它们,您应该实施equals()方法。

首先:How to override equals method in java

问题2:

您可以通过编写

删除相同的项目
list2.removeAll(list1);

请注意,您必须实施equals()方法才能使其正常运行。