java interscect, union, join, отдельные списки с предикатом

Здравствуйте, у меня есть 2 списка с одинаковыми объектами. Я хотел бы выполнить любую операцию, такую ​​​​как пересечение, объединение, отличное, используя предикат, потому что я не могу использовать равенство для сравнения.

Пример:

class Car{
  public String id;
  public String color;
  public int hashcode(){
    //id field is used for hashcode
  }
  public boolean equals(){
    //id field is used for equals
  }
}

Теперь у меня есть два списка автомобилей. Мне нужно найти дубликаты в этих списках, но не по идентификатору, а только по цвету.

List<Car> carList1 = new ArrayList(){ new Car(1,blue), new Car(2,green)};
List<Car> carList2 = new ArrayList(){ new Car(1,silver), new Car(4,green)};

Мне нужно найти второй объект из carList1 (новый Car(2,зеленый))

List Что-то похожее на

Collection.intersect(carList1,carList2,comparator).

В C# я бы использовал для этого LINQ.

7
задан kuki1384 15 March 2012 в 13:56
поделиться