我有一个可能具有或不具有相同属性值的对象的列表/集合。获得具有相同属性的对象的不同列表的最简单方法是什么?一种收集类型最适合此目的吗?例如,在C#中,我可以使用LINQ执行以下操作。
var recipients = (from recipient in recipientList select recipient).Distinct();
我最初的想法是使用lambdaj(链接文本),但似乎不支持此功能。
使用接口的实现Set<T>(类T可能需要自定义.equals()方法,您可能必须.equals()自己实现)。通常,a HashSet是开箱即用的:它使用Object.hashCode()和Object.equals()方法比较对象。对于简单的对象,它应该足够独特。如果没有,你就必须执行T.equals()和T.hashCode()相应。
Set<T>
.equals()
HashSet
Object.hashCode()
Object.equals()
T.equals()
T.hashCode()
有关帮助实现equals和hashcode的库的信息,请参见下面的Gaurav Saini的评论。