Mục tìm kiếm Java trong ArrayList các lớp với một Iterator [trùng lặp]
Tôi không thể tìm thấy hướng dẫn nào về điều này, mọi hướng dẫn dường như sử dụng ArrayList gồm các chuỗi.
Giả sử bạn có một lớp Person có nhiều thuộc tính bao gồm tên.
class person
{
public String name;
public int age;
public int weight;
public String hair_colour;
public String eye_colour;
};
Bạn có ArrayList gồm nhiều người và bạn muốn tìm một người trong ArrayList này và bạn chỉ có tên của họ.
ArrayList<person> people = new ArrayList<person>();
Làm cách nào để tìm "Fred"?
Tôi biết có thể lặp lại tất cả các mục trong danh sách nhưng tôi muốn thực hiện điều này đúng cách với một Iterator.
Có ai biết hướng dẫn giải thích cách thực hiện tìm kiếm trên ArrayList bằng cách sử dụng Iterator để tìm một mục chỉ bằng một thuộc tính của mục đó không?
Hoặc là điều này chỉ là không thể? Tôi có hiểu lầm của Iterator không?
Trả lời
Như đã chỉ ra trong phần nhận xét, cách tiếp cận trình lặp rất giống với những gì bạn làm với các vòng lặp tiêu chuẩn:
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
}
Nếu bạn đang sử dụng Java 8 trở lên, có thể bạn có thể thử stream (), chúng làm cho điều này rất nhỏ gọn:
public static Person findPersonByName(List<Person> list, String name) {
return list.stream().filter(p -> name.equals(p.getName())).findFirst().orElse(null);
}