我的问题是,我要比较Java中的两个ArrayList
例如
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
请注意,我将在这些ArrayList中包含多个对象,而且方法效率也很重要(不是很重要,但至少很重要)。我在这里看到了答案,但我不确定哪一个更好或最坏
提前谢谢。
我不确定我是否理解您的问题,但如果您试图比较和排序对象列表,最好的选择是从Collections API中查找树图。尝试以下操作:
HashMap、LinkedHashMap和TreeMap的区别
如果这些列表中的对象对您不重要,可以执行以下操作:
阵列1。移除所有(阵列2);
这将从array1中删除array2中存在的所有元素。
所以如果array1=[oby1, oby2, oby3]和array2=[oby1, oby2]
移除所有后:
array1=[Obj3]和array2=[Obj1, Obj2]
如果您无法从任何一个列表中删除对象,请创建一个临时列表并从中删除以获得额外的对象。
您可能应该为此使用java的set接口。
现在,重要的一件事是在MyObject上有一个好的方法,可以比较两个MyObject是否相同。
然后您可以使用上面的留档链接来检查两个集合的交集。如果两个集合中的项目数量与一个集合中的项目数量相同,那么它们是相同的集合(无论顺序如何)。
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);
}
问题内容: 我有以下两个数组。我想要这两个数组之间的区别。也就是说,如何找到两个数组都不存在的值? 问题答案: 注意: 这个答案将返回的值是不存在的,它不会返回值不在。
我错过了什么?
问题内容: 如何以格式计算两个日期之间的差并以秒或毫秒为单位获取结果? 问题答案: 因此,您可以为您的目的使用。
问题内容: 功能: 我的要求是找出几年中两个日期之间的差异。所以,我写了上面的函数。在此,如果d1为NULL,则将其分配为当前日期。但是,它会产生如下所示的错误。 有没有人能帮助我解决这个问题。 问题答案: 尝试 : 函数以以下格式返回两个日期之间的年,月和天数: 从此输出中使用,以选择唯一的年份差异。也没有必要把if语句来处理,因为我已经添加返回第一值,所以,如果是它返回 功能结构: 函数调用:
我正在尝试编写一个方法来打印两个ZonedDateTimes之间的时间差,关于时区之间的差异。 我找到了一些解决方案,但它们都是为使用LocalDateTime而编写的。
我正在设置闹钟的日历日期。闹钟时间设置了小时、分钟、格式和日期。我还想抓住现在的时间,比较两者之间的差异。所以,如果闹钟时间设置为周三,现在时间是周四,我想知道周四到周三之间有多少天。我还需要时间和分钟。 我尝试过每一个例子,但似乎都不管用。 JAVA方法 我确实尝试过这个。 这只是不太正确。它说是2天,所以我假设它是从闹钟日(星期二)到星期四(今天)。我需要的是从今天(星期四)到星期二。从现在起