我需要比较同一类型对象的2个列表。我可以得到关于哪种方法最快的建议。
E.g
public class Cars {
String engine;
String brand;
String etc ..;
我得到了方法compareCars(List a,List b),如果只有一次出现两者中的Cars相同,则返回true。
答案 0 :(得分:0)
首先,类名应该是单数 - Car 。
I suggest the following code.
你可以覆盖hashCode()和equals()来比较两辆汽车。
boolean compareCars(List<Car> cars1, List<Car> cars2) {
boolean isSingleOccuranceMatch = false;
for (Car car : cars1) {
if (cars2.contains(car)) {
isSingleOccuranceMatch = true;
break;
}
}
return isSingleOccuranceMatch;
}
不需要变量isSingleoccuranceMatch。
This is just for readability.
你可以直接返回true而不是break,并在完成所有迭代后返回false。
使用Java8,不需要任何方法
cars1.stream().filter(car1 -> cars2.contains(car1) ).count() > 0