找到 2 个数组列表之间的交集的有效算法/方法是什么。 (我正在使用 java 8 )
What is the efficient algorithm / way to find intersection between 2 array lists. ( I am using java 8 )
我有 2 个数组列表,其中包含一个自定义对象 Stock。
public class Stock{
private String companyName;
private double stockPrice;
// getters and setters
}
List1 包含 Stock 对象。 List2 还包含库存对象。
列表 1 和列表 2 的大小相同。列表 1 中有一些库存对象与列表 2 中存在的对象相同。我需要从列表 2 中获取列表 1 中存在的那些相同对象。换句话说,获取列表中列表 1 和列表 2 的交集2. 我试图找出 Java 8 中是否有任何直接的方法以有效的方式给出这个结果。或者如果没有,如何在时间复杂度和 [=19= 方面构建一个有效的算法] 复杂性?非常感谢您的帮助。
List<T> intersect = list1.stream()
.filter(list2::contains)
.collect(Collectors.toList());
信用:Fat_FS 在 Intersection and union of ArrayLists in Java 回答。
确保重写 equals 和 hashcode 方法(假设您想查看对象的内容以进行相等比较)
转换列表以设置以获得更好的性能
我有 2 个数组列表,其中包含一个自定义对象 Stock。
public class Stock{
private String companyName;
private double stockPrice;
// getters and setters
}
List1 包含 Stock 对象。 List2 还包含库存对象。
列表 1 和列表 2 的大小相同。列表 1 中有一些库存对象与列表 2 中存在的对象相同。我需要从列表 2 中获取列表 1 中存在的那些相同对象。换句话说,获取列表中列表 1 和列表 2 的交集2. 我试图找出 Java 8 中是否有任何直接的方法以有效的方式给出这个结果。或者如果没有,如何在时间复杂度和 [=19= 方面构建一个有效的算法] 复杂性?非常感谢您的帮助。
List<T> intersect = list1.stream()
.filter(list2::contains)
.collect(Collectors.toList());
信用:Fat_FS 在 Intersection and union of ArrayLists in Java 回答。
确保重写 equals 和 hashcode 方法(假设您想查看对象的内容以进行相等比较)
转换列表以设置以获得更好的性能