Получение отдельных членов массива по свойству

У меня есть массив Contract, который содержит:

String:id
String:value

Массив:

contract1 = Contract.new()
contract1.id = 2
contract1.value = "Apple"

contract2 = Contract.new()
contract2.id = 2
contract2.value = "Pen"

contract3 = Contract.new()
contract3.id = 1
contract3.value = "Pineapple"


array = [Contract1, Contract2, Contract3]

Хотелось бы узнать список контрактов, идентификаторы которых разные.

Я хочу иметь решение, которое не заставит меня изменить реализацию моего объекта (переопределить метод isEqual и т. Д.), Поскольку я буду использовать его для более чем одного объекта в моем коде.

Желаемый результат:

[contract1, contract3] or [contract2, contract3]

В идеале расширение с дополнительным методом, возвращающим только те значения, которые делаются отличными:

Желаемый результат: [2, 1]

Я попробовал несколько подходов из похожих вопросов, но либо ответы устарели, либо не соответствуют моим потребностям.


person NSF    schedule 16.03.2017    source источник
comment
С новой информацией это дубликат stackoverflow.com/questions/39307188/, но все же дубликат.   -  person David Berry    schedule 17.03.2017
comment
Второй вопрос легко решается с помощью map   -  person David Berry    schedule 17.03.2017