Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Cách triển khai custom Iterable trong Java?

Interface Iterable định nghĩa trong package java.lang từ Java 5. Đối tượng triển khai interface này cho phép thành mục tiêu của câu lệnh "for-each". Vòng lặp for-each dùng để lặp mảng và collection. Iterable cũng có thể triển khai để tạo hành vi tùy chỉnh.

Cú pháp

public interface Iterable<T>

Ví dụ

import static java.lang.String.format; 
import java.util.*; 

// Lớp Person 
class Person { 
    private String firstName, lastName; 
    private int age; 
    public Person(){ } 
    public Person(String firstName, String lastName, int age) { 
        this.firstName = firstName; 
        this.lastName = lastName; 
        this.age = age; 
    } 
    // getters/setters... 
    @Override 
    public String toString() { 
        return format("First Name:\t%s\tLast Name:\t%s\tAge:\t%d", firstName, lastName, age); 
    } 
} 

// Lớp PersonArrayList triển khai Iterable 
public class PersonArrayList implements Iterable<Person> { 
    private List<Person> persons; 
    private static final int MIN_AGE = 10; 
    public PersonArrayList() { 
        persons = new ArrayList<Person>(MIN_AGE); 
    } 
    public PersonArrayList(int age) { 
        persons = new ArrayList<Person>(age); 
    } 
    public void addPerson(Person p) { 
        persons.add(p); 
    } 
    public void removePerson(Person p) { 
        persons.remove(p); 
    } 
    public int age() { 
        return persons.size(); 
    } 
    @Override 
    public Iterator<Person> iterator() { 
        return persons.iterator(); 
    } 
    
    public static void main(String[] args) { 
        Person p1 = new Person("Adithya", "Sai", 20); 
        Person p2 = new Person("Jai", "Dev", 30); 
        PersonArrayList pList = new PersonArrayList(); 
        pList.addPerson(p1); 
        pList.addPerson(p2); 
        for (Person person : pList) { 
            System.out.println(person); 
        } 
    } 
}

Kết quả

First Name:     Adithya      Last Name:     Sai      Age:     20 
First Name:     Jai          Last Name:     Dev      Age:     30