2016-11-15 104 views
0

我有一組找到不同的對象,即需要遍歷設置按屬性

Set<FitmentData> fitmentDataSet; 

這組大約有5個對象。現在

public class FitmentData implements Comparable<FitmentData> 
{ 
private String year; 
private String make; 
private String model; 

} 

,我需要通過這一套迭代,並找出有多少不同的車輛這一套已經比較一年,製作和model.I想獲得通過對比今年設定的第一目標和循環,使,模型。有沒有更好的方法來處理這個問題?

注:我的樣品裝修物體看起來像

new FitementDate("2005", "honda","crv"); 
new FitementDate("2005", "honda","crv"); 
new FitementDate("2005", "honda","crv"); 
new FitementDate("2005", "mazda","cx-5"); 
new FitementDate("2005", "subaru","forester"); 
+0

如果您使用的是Java 8,參照流API - GROUPBY() –

+4

如果執行'equals'和'hashCode'正確的,就只能在設定的三個項目。 – Makoto

+1

設置不保留重複值,請嘗試'List'而不是 – emotionlessbananas

回答

0

正如在評論中提到:「一集不包含重複的」,例如,如果您使用的是HashSet你實現hashCodeequals方法正確。如果您使用的是TreeSet,則還必須正確實施compareTo方法(並實施Comparable接口)。關於這些方法的實現看看其他StackOverflow的帖子(還有更多):

通過Set(或任何Collection迭代)可以使用不同的方法完成:for,foreach, lambda,...:

+0

10集合不包含重複true。集合中的對象可以具有相同的數據(mycase)。讓我再次告訴你我的要求。我只是想要預先設定具有不同年份,品牌和型號的物品。 – karim

+0

如果你沒有Java語言中的'Set',或許你應該談論並使用'List'?然後使用http://stackoverflow.com/questions/12455737/how-to-iterate-over-a-set-hashset-without-a-iterator中提到的迭代,因爲這些工作適用於所有Java'Collections'。 – Philipp