Каков эффективный алгоритм / способ найти пересечение между двумя списками массивов. (Я использую Java 8) - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть 2 списка массивов, который содержит пользовательский объект Stock.

public class Stock{

    private String companyName;
    private double stockPrice;

    // getters and setters 
}

List1 содержит объекты Stock. List2 также содержит стоковые объекты.

Список 1 и список 2 одинаковы по размеру. Есть несколько фондовых объектов в списке 1, которые совпадают с представленными в списке 2. Мне нужно получить те же объекты, которые присутствуют в списке 1, из списка 2. То есть, другими словами, получить пересечение списка 1 и списка 2 в списке. 2. Я пытаюсь выяснить, существует ли какой-либо прямой путь в Java 8, который эффективно дает этот результат. Или, если нет, как построить эффективный алгоритм с точки зрения сложности времени и пространства? Помощь высоко ценится.

1 Ответ

0 голосов
/ 05 ноября 2018
List<T> intersect = list1.stream()
    .filter(list2::contains)
    .collect(Collectors.toList());

CREDIT: ответ Fat_FS на Пересечение и объединение списков массивов в Java .

Убедитесь, что вы переопределяете методы equals и hashcode (при условии, что вы хотите просмотреть содержимое объектов для сравнения на равенство)

Конвертировать список для повышения производительности

...