Java Collection搜索Max Age

时间:2016-01-21 13:40:31

标签: java collections iteration

我需要从一个集合中获取最大年龄,该集合将其名字,第二个名称和年龄存储在一个元素中。 例如:

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()获取集合大小。

6 个答案:

答案 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());
});