2011-06-07 19 views
2

我有一堆列表(List<SomeClass>),我想獲得交集。 SomeClass的是這樣的:retainAll許多列表(Java)

public class SomeClass { 
    private String a; 
    private String b; 

    // getters and setters 
} 

它應該只成爲交集的部分,如果成員a和b是相等的。我怎樣才能做到這一點?

我可能以某種方式使用Collection.retainAll(...)。但我有大量List對象進行比較...

回答

2

根據您的班級覆蓋equalshasCode相應的方法。請參閱Implementing equals。這兩種方法隱含在Object實例中,即所有類的根,並且可以對它們進行調整/覆蓋,以實現某些語義之後的實例標識,就像你的情況一樣。

這個other SO question也解決了這個問題,你可以找到實現equalshasCode方法的例子。

至於如何獲得N個列表中的所有元素。您可以使用第一個列表初始化一個HashSet,並重復其餘的調用retainAll

+0

非常感謝! – paoloP 2011-06-11 11:47:16