我需要从一个集合中获取最大年龄,该集合将其名字,第二个名称和年龄存储在一个元素中。 例如:
collection[size++] = new Person(fname,lname,age);
//ex: Person("Bob", "Jones", 50);
我到目前为止所获得的代码是遍历集合,但我仍然坚持如何获得元素的年龄部分。
public int maxAge() {
int mAge = -1;
for (int i = 0; i == collection.size(); i++) {
if (collection[i] > mAge) {
collection[i] = mAge;
}
}
return mAge;
}
getSize()
获取集合大小。
答案 0 :(得分:0)
请注意您的代码。它将mAge分配给集合,即-1将被分配给集合,并且您将返回其值始终为-1的mAge。
public int maxAge() {
int mAge = -1;
for (int i = 0; i < getSize(); i++) {
if (collection[i].getAge() > mAge) {
mAge = collection[i].getAge();
}
}
return mAge;
}
答案 1 :(得分:0)
假设您Array
上有getAge()
Person
方法,可以试试这个:
public int maxAge() {
int mAge = -1;
for (int i = 0; i < collection.length; i++) {
if (collection[i].getAge() > mAge) {
mAge = collection[i].getAge();
}
}
return mAge;
}
答案 2 :(得分:0)
public int maxAge() {
int mAge = -1;
for (int i = 0; i < collection.length; i++) {
if (collection[i].getAge() > mAge) {
mAge = collection[i].getAge();
}
}
return mAge;
}
答案 3 :(得分:0)
它取决于集合内的对象类型,假设是Person的集合:
public int maxAge(){
int mAge = -1;
for (Person person: collection) {
if (person.getAge() > mAge) {
mAge=person.getAge();
}
}
return mAge;
}
答案 4 :(得分:0)
获取具有最大年龄的person元素:
Person personWithMaxAge = Collections.max( collection, new Comparator<Person>() {
@Override
public int compare( Person first, Person second) {
if ( first.getAge() > second.getAge() )
return 1;
else if (first.getAge() < second.getAge() )
return -1;
return 0;
}
});
然后int maxAge = personWithMaxAge.getAge();
答案 5 :(得分:0)
如果您使用的是Java8:
Optional<Person> person = collection.stream().max(Comparator.comparing(Person::getAge));
该类型是可选的,因为该集合可能为空。
现在您可以这样使用它:
person.ifPresent(p -> {
// place your code here
// System.out.println(p.getAge());
});