使用for for each循环查找数组列表中的两个元素

时间:2011-03-22 11:28:42

标签: java loops foreach arraylist

我需要帮助为每个循环编写一个搜索名为peoplelist的数组列表的人。循环需要在数组中搜索String postcode和String name的值。然后,如果找到它,则需要返回它们的ID,如果不是,则返回null。任何形式的帮助都会很棒!

6 个答案:

答案 0 :(得分:3)

如果类People被编写为Java bean(即使用标准的getter方法),那么这样的事情就可以完成:

for (People person : peopleList) {
  if (person.getName().equals(name) && person.getPostcode().equals(postCode))
    return person.getId();
}
return null;

如果某个人的姓名或邮政编码可以是null,您可能需要翻转equals调用以避免空指针异常(例如name.equals(person.getName())而不是person.getName().equals(name))。

Btw Person会是一个更好的名字。

答案 1 :(得分:2)

需要对你的课程做出很多假设,但这样的事情就足够了:

for (People person : peoplelist) {
    if (person.getPostCode().equals(postcode) && person.getName().equals(name)) {
        return person.getId();
    }
}
// deal with not being found here - throw exception perhaps?

答案 2 :(得分:1)

对于“两个元素”,你的意思是“某个类的两个属性”吗?如果是这样,沿着这些方向的事情会做:

String id = null;
for(People p : peoplelist) {
    if(somePostcode.equals(p.postcode) && someName.equals(p.name)) {
        id = p.id;
        break; // no need to continue iterating, since result has been found
    }
}
// result “id” is still null if the person was not found

答案 3 :(得分:0)

People foundPerson;
for (People eachPeople : peoplelist )
{
    if (Integer.valueOf(eachPeople.getID()) == 10054 
         && "Jimmy".equals(eachPeople.getName()))
    {
         foundPerson= eachPeople;  
         break;
    } 
}

答案 4 :(得分:0)

//In case multiple persons match :)
List<String> result = new LinkedList<String>();

for (People person : peopleList) {
  if (person.getName().equals(name) && person.getPostcode().equals(postCode))
    result.add(person.getId()); 
}

if(result.isEmpty()){
  return null;
}else{
  return result;
}

答案 5 :(得分:0)

假设您有一个Person bean,那么如果您要检索Personpostcode匹配某些值的name的所有实例,您可以执行类似这样的操作:

public List<Person> searchFirst(List<Person> persons, String postcode, String name) {
    List<Person> matchingPersons = new ArrayList<Person>();
    for (Person person : persons) {
        if (person.getPostcode().equals(postcode) && person.getName().equals(name))
            matchingPersons.add(person);
    }
    return matchingPersons;
}

下次,您可能希望向我们展示您的代码,以便我们帮助您了解您所做的错误:)