java确定对象列表的最大元素

时间:2013-11-26 22:27:36

标签: java arraylist max

我有ArrayList个对象,我需要找到最大值。这个案例与此处几乎相同(best way to find maximum age element of List)。 Ian Bishop回答很合适,但当n个对象的年龄相同时,我需要说没有最大值并打印"Equals" + maxAge

如何修改此代码以实现此目的?

3 个答案:

答案 0 :(得分:1)

使用额外的boolean检查:

Man maxAge = new Man(0);
boolean isAmaxFoud = false;

for(Man man : list) {
  if(man.age > maxAge.age) {
    maxAge = man;
    isAmaxFound = true;
  }
}

if(!isAmaxFound) // <<--- all age are equal
      print "Equals "+list.get(0)
else print maxAge

答案 1 :(得分:0)

如果您只需要获取最大值一次,请遍历列表并跟踪到目前为止的最大值。如果你还保持boolean告诉你是否已经多次看到最大值,并且当你找到一个新的最大值时将其设置为false,当你找到一个等于你的最大值的值时将其设置为true,那么那应该是工作

答案 2 :(得分:0)

您可以对接受的答案进行简单修改:

Man maxAge = null;
boolean unique = true;
for(Man man : list) {
    if (maxAge == null) {
        maxAge = man;
        unique = true;
    } else if (man.age > maxAge.age) {
        maxAge = man;
        unique = true;
    } else if (man.age == maxAge.age) {
        unique = false;
    }
}
if (maxAge == null) {
    System.out.println("Empty list!");
} else {
    if (unique) {
        System.out.println("Max age: " + maxAge.age);
    } else {
        System.out.println("Max age is not unique; equals " + maxAge.age);
    }
}