Java menemukan item di ArrayList kelas dengan Iterator [duplikat]
Saya tidak dapat menemukan tutorial tentang ini, setiap tutorial tampaknya menggunakan ArrayList string.
Misalkan Anda memiliki kelas Orang yang memiliki banyak atribut termasuk nama.
class person
{
public String name;
public int age;
public int weight;
public String hair_colour;
public String eye_colour;
};
Anda memiliki ArrayList orang dan Anda ingin menemukan satu orang di ArrayList ini dan Anda hanya memiliki namanya.
ArrayList<person> people = new ArrayList<person>();
Bagaimana cara menemukan "Fred"?
Saya tahu itu mungkin untuk mengulang meskipun semua item dalam daftar tetapi saya ingin melakukan ini dengan benar dengan Iterator.
Adakah yang tahu tentang tutorial untuk menjelaskan cara melakukan pencarian di ArrayList menggunakan Iterator untuk menemukan item hanya dengan menggunakan satu atribut item itu?
Atau apakah ini tidak mungkin? Apakah saya salah paham dengan Iterator?
Jawaban
Seperti yang ditunjukkan dalam komentar, pendekatan iterator sangat mirip dengan apa yang Anda lakukan dengan loop standar:
public static Person findPersonByName(List<Person> list, String name) {
Iterator<Person> it = list.iterator();
while (it.hasNext()) {
Person p = it.next();
if (p.getName().equals(name)) { // Person found, return object
return p;
}
}
return null; // Not found return NULL
}
Jika Anda menggunakan Java 8 dan yang lebih baru, mungkin Anda dapat mencoba streams (), mereka membuatnya sangat ringkas:
public static Person findPersonByName(List<Person> list, String name) {
return list.stream().filter(p -> name.equals(p.getName())).findFirst().orElse(null);
}