循环遍历数组并仅显示一个项目

时间:2013-12-09 16:52:24

标签: java android

我有一个看起来像这样的数组:

  array = { Person1, Person2, Person3, Person1, Person2, Person3};

现在我如何获得一个具有唯一人数总数的int?这意味着已经计算过的人不应再次计算。

在上面的给出示例中,应该返回int值3

  int uniq = 3;

我该怎么做这个任务?

3 个答案:

答案 0 :(得分:0)

最简单的方法是在数组中添加人员时避免加倍。 为此,当您在数组中添加Person时,您将遍历所有数组并验证您还没有它:)

如果你需要在列表中加倍,那么你应该创建一个tempArray并且只在这个新数组中添加不同的人,就像在另一个方法中描述的那样,所以最后你将在tempArray中得到你的好数字.size()

答案 1 :(得分:0)

尝试:

List<Person> uniqueList = new ArrayList<Person>(new LinkedHashSet<Person>( array.asList() ).sort() );

uniqueList.size(); //Number of unique objects

答案 2 :(得分:0)

如果你想要的只是大小,这是其他答案之一的正确版本:

Set<Person> set = new HashSet<Person>(Arrays.asList(array));
int count = set.size();

这假定您的Person类型具有equals方法,该方法将告诉您两个人是否相同,或者是否有equals,默认{ {1}}正常(如果引用相等,则默认返回equals。)

PS:如果您在true中定义了自己的Person必须也定义equals或否则这个解决方案不会起作用。必须定义hashCode,以便如果两个hashCode相等,那么它们也具有相同的哈希码。请参阅What issues should be considered when overriding equals and hashCode in Java?