gpt4 book ai didi

java - 处理两个数组列表之间的差异

转载 作者:行者123 更新时间:2023-12-02 09:43:42 25 4
gpt4 key购买 nike

我的问题是我要比较 Java 中的两个数组列表

例如

String prop1 = "String"
String prop2 = "OtherString"
MyObject obj1 = new MyObject(prop1,prop2);
MyObject obj2 = new MyObject(prop1,prop2);
MyObject obj3= new MyObject(prop1,prop2);

ArrayList<MyObject> array1 = new Arraylist<>();
ArrayList<MyObject> array2 = new Arraylist<>();
//array 1 has 3 objects
array1.add(obj1);array1.add(obj2);array1.add(obj3);
//array 2 has 2 objects
array2.add(obj1);array2.add(obj2);

通过比较方法我知道这些数组是不同的

(如果数组具有相同的元素,即使它们的顺序不同,我的方法也会返回 false,如果它们具有相同的元素,则返回 true)

因此,该方法将返回 FALSE

我的问题是:

if(!methodToCompareArrays(array1,array2)){
//HOW TO GET THE DIFFERENT objects (IN THIS CASE, obj3 is the different object)
//this is the question :)
}else{
//If there is no difference, well, it doesn't matter too much

请注意,我将在这些数组列表中放入多个对象,并且方法效率也很重要(不是至关重要,但至少很重要)。我看过答案here但我不确定哪一个更好或最差

提前致谢。

最佳答案

你可能应该使用java的set interfaces为此。

现在,重要的一件事是在 MyObject 上有一个好的 equals 方法,以便能够比较两个 MyObjects 是否相同相同。

然后您可以使用上面的文档链接来检查两个集合的交集。如果两组中的项目与一组中的项目数量相同,则它们是同一组(无论顺序如何)。

HashSet<MyObject> set1 = new HashSet<MyObject>(array1);
HashSet<MyObject> set2 = new HashSet<MyObject>(array2);

Set<MyObject> intersection = new HashSet<MyObject>(set1);
intersection.retainAll(set2);

if(intersection.size() == set2.size()) {
// They're the same.
} else {
HashSet<MyObject> itemsOnlyInSet1 = intersection;
HashSet<MyObject> itemsOnlyInSet2 = set2.retainAll(set1);
}

关于java - 处理两个数组列表之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26046342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com