รายการค้นหา Java ใน ArrayList ของคลาสที่มี Iterator [ซ้ำกัน]
Oct 15 2020
ฉันไม่พบบทช่วยสอนนี้ทุกบทช่วยสอนดูเหมือนจะใช้ ArrayList ของสตริง
สมมติว่าคุณมีคลาสบุคคลที่มีคุณสมบัติมากมายรวมถึงชื่อ
class person
{
public String name;
public int age;
public int weight;
public String hair_colour;
public String eye_colour;
};
คุณมี ArrayList ของบุคคลและคุณต้องการค้นหาหนึ่งคนใน ArrayList นี้และคุณมีเพียงชื่อของพวกเขา
ArrayList<person> people = new ArrayList<person>();
ฉันจะหา "เฟร็ด" ได้อย่างไร?
ฉันรู้ว่ามันเป็นไปได้ที่จะวนซ้ำรายการทั้งหมดในรายการ แต่ฉันต้องการทำอย่างถูกต้องกับ Iterator
มีใครรู้วิธีการสอนเพื่ออธิบายวิธีค้นหาบน ArrayList โดยใช้ Iterator เพื่อค้นหารายการโดยใช้แอตทริบิวต์เดียวของรายการนั้นหรือไม่?
หรือแค่นี้ทำไม่ได้? ฉันเข้าใจผิดของ Iterator หรือไม่?
คำตอบ
1 RohanKumar Oct 15 2020 at 10:07
ตามที่ระบุไว้ในความคิดเห็นวิธีการวนซ้ำคล้ายกับสิ่งที่คุณทำกับลูปมาตรฐาน:
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
}
หากคุณใช้ Java 8 ขึ้นไปคุณอาจลองใช้สตรีม () ซึ่งทำให้มีขนาดกะทัดรัดมาก:
public static Person findPersonByName(List<Person> list, String name) {
return list.stream().filter(p -> name.equals(p.getName())).findFirst().orElse(null);
}