Использование для каждого цикла, чтобы найти два элемента в списке массивов - PullRequest
1 голос
/ 22 марта 2011

Мне нужна помощь в написании каждого цикла, который просматривает список массивов, называемый peoplelist типа people.Цикл должен искать значения String почтовый индекс и имя String в массиве.Затем он должен вернуть свой идентификатор, если он найден, и NULL, если это не так.Любая помощь будет отличной!

Ответы [ 6 ]

3 голосов
/ 22 марта 2011

Если класс People написан как Java-бин (то есть со стандартными методами получения), что-то вроде этого сделает работу:

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)).

Кстати Person было бы лучшим именем.

2 голосов
/ 22 марта 2011

Нужно сделать много предположений о ваших классах, но чего-то такого должно хватить:

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?
1 голос
/ 22 марта 2011

Имея в виду «два элемента», вы имеете в виду «два атрибута некоторого класса»?Если так, то что-то в этом роде сделало бы:

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
0 голосов
/ 22 марта 2011

Если у вас есть бин Person, то, если вы хотите получить все экземпляры Person, чьи postcode и 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;
}

В следующий раз, возможно, вы захотите показать нам свой код, чтобы мы могли помочь вам понять, что вы делаете неправильно:)

0 голосов
/ 22 марта 2011
//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;
}
0 голосов
/ 22 марта 2011
People foundPerson;
for (People eachPeople : peoplelist )
{
    if (Integer.valueOf(eachPeople.getID()) == 10054 
         && "Jimmy".equals(eachPeople.getName()))
    {
         foundPerson= eachPeople;  
         break;
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...