2016-11-15 82 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