比较对象:使用增强的for循环

时间:2014-01-19 20:56:33

标签: java arrays object foreach compare

我正在迭代一组对象(不同的网站类型)。但我希望能够显示哪个网站的会员数量最多。最初我的代码显示了每个网站的成员数量,但我的代码并不完整,因为我不确定如何比较对象以查看具有最多成员数量的对象。目前的代码:

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;
            }
        }
    }

2 个答案:

答案 0 :(得分:1)

您需要在迭代时跟踪最大用户数。

  1. 在循环
  2. 之前将名为maxWebsite的变量初始化为null
  3. 在循环
  4. 之前将名为max的整数初始化为Integer.MIN_VALUE
  5. 在您进行迭代时,请测试w.getMaxUsers()是否优于max值。
  6. 如果是,请相应更新maxWebsitemax变量
  7. 注意:删除循环中的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对您的网站集进行排序。视图最多的网站将位于您收藏的开头。