Java 如何在对象arraylist中使用迭代器

Java 如何在对象arraylist中使用迭代器,java,Java,给你 public class Planet { ArrayList<Person> person = new ArrayList<>(); Iterator<Person> itr = person.iterator(); public String getFemaleName() { for (int a = 0;a < person.size();a++) {

给你

public class Planet
{

    ArrayList<Person> person  = new ArrayList<>();
    Iterator<Person> itr = person.iterator();

    public String getFemaleName()
    {

        for (int a = 0;a < person.size();a++)
        {
            if (person.getGender == "female")
            {
                return person.get(a).getName();
            }
        }
    }
}
公共级行星
{
ArrayList person=新建ArrayList();
迭代器itr=person.Iterator();
公共字符串getFemaleName()
{
对于(int a=0;a
现在我有两个问题,第一个是我只想返回女性的名字,但似乎我必须返回一些东西,即使我的ArrayList中没有女性。 第二个是如何使用迭代器而不是for循环。

高级for循环:

for (Person p : persons) // you should name your lists with plural
{
    if (p.getGender().equals("female")) // use .equals() to compare strings, since == works in weird ways
    {
        return p.getName();
    }
}
return null;
for(Person person: persons)
   if(person.getGender.equals("female"))
      return person.getName();

return null;
迭代器:

Iterator<Person> personsIter = persons.iterator();
while (personsIter.hasNext()) {
    Person current = personIter.next(); 
    if(person.getGender.equals("female"))
       return person.getName();
}
return null
Iterator personsIter=persons.Iterator();
while(personsIter.hasNext()){
人员当前=personIter.next();
if(person.getGender.equals(“女性”))
返回person.getName();
}
返回空
  • 对于不存在女性的情况,只需在函数末尾添加一个
    returnnull
    ,就可以了,因为您的第一个
    return
    语句根本不会执行

  • 对于第二个问题,使用迭代器。。只需将
    for
    循环替换为

    while(itr.hasNext())
    {
    Person newPerson=itr.next();
    if(newPerson.getGender().equals(“女性”)
    返回newPerson.getName();
    }


  • 您是否需要显式地使用
    迭代器
    ,或者如果您在内部使用
    迭代器
    就足够了?当您找不到女性时,您需要返回什么内容的要求是什么?通常建议在LHS上使用文本进行相等比较,如
    女性.equals(p.getGender())
    避免NullPointerException问题