我正在寻找一种优雅而有效的方式来用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))复杂度。

10-08 06:52