我正在迭代一组对象(不同的网站类型)。但我希望能够显示哪个网站的会员数量最多。最初我的代码显示了每个网站的成员数量,但我的代码并不完整,因为我不确定如何比较对象以查看具有最多成员数量的对象。目前的代码:
public static void mostUsers(){
for (Website w: websiteTypes){
// check if the array index is not null
if (w!=null){
System.out.println(w.getType() + "has:" + w.getMembers());
System.out.println(); // line break
**//Code to compare amount of users on each site and display highest**
} else {
// no more records so quit loop
break;
}
}
}
答案 0 :(得分:1)
您需要在迭代时跟踪最大用户数。
maxWebsite
的变量初始化为null
max
的整数初始化为Integer.MIN_VALUE
w.getMaxUsers()
是否优于max
值。maxWebsite
和max
变量注意:删除循环中的else语句,必须迭代数组的所有元素。
<小时/> 如果您使用的是Collections
,那么使用Collections.max
和自定义比较器可以很简单:
List<Website> l = .......
l.removeAll(Collections.singleton(null)); //remove null elements from the list
Website maxWebsite = Collections.max(l, new Comparator<Website>(){
@Override
public int compare(Website arg0, Website arg1) {
return Integer.compare(arg0.getMaxUsers(), arg1.getMaxUsers());
}
});
答案 1 :(得分:0)
使用Comparator,或将网站扩展为Comparable。
然后,使用sort
对您的网站集进行排序。视图最多的网站将位于您收藏的开头。