我正在寻找一种优雅而有效的方式来用Java做到这一点:
public class Object1{
String name;
int age;
}
public class Object2{
String name;
String adress;
}
List<Object1> list1;
List<Object2> list2;
我想为list1中的每个Object1找出list2中是否有相同名称的Object2。
有没有比我在下面写的更好的方法了?
for (Object1 element1 : list1) {
for (Object2 element2 : list2) {
if (element2.name.equals(element1.name)){
// DO MY STUFF
}
}
}
最佳答案
如果可以在这些类中的名称上实现比较器,则可以对它们进行排序。
对这些列表进行排序,将使您可以对它们进行二进制搜索。
因此,对于Object1中的每个元素,您将在object2中进行二进制搜索。
这将使您的代码更快,从O(n * m)复杂度到O(n * log(m))复杂度。