我有ArrayList
个对象,我需要找到最大值。这个案例与此处几乎相同(best way to find maximum age element of List)。 Ian Bishop回答很合适,但当n个对象的年龄相同时,我需要说没有最大值并打印"Equals" + maxAge
。
如何修改此代码以实现此目的?
答案 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);
}
}