WEB开发网
开发学院软件开发Java 关于 Java Collections API 您不知道的 5 件事,第... 阅读

关于 Java Collections API 您不知道的 5 件事,第 1 部分:定制和扩展 Java Collections

 2010-05-27 00:00:00 来源:WEB开发网   
核心提示: 以前,开发人员必须手动获得一个 Iterator,关于 Java Collections API 您不知道的 5 件事,第 1 部分:定制和扩展 Java Collections(3),使用 next() 获得 Iterator 指向的对象,并通过 hasNext() 检查是否还有更多可用对象,

以前,开发人员必须手动获得一个 Iterator,使用 next() 获得 Iterator 指向的对象,并通过 hasNext() 检查是否还有更多可用对象。从 Java 5 开始,我们可以随意使用 for 循环的变种,它可以在幕后处理上述所有工作。

实际上,这个增强适用于实现 Iterable 接口的任何对象,而不仅仅是 Collections。

清单 2 显示通过 Iterator 提供 Person 对象的孩子列表的一种方法。 这里不是提供内部 List 的一个引用 (这使 Person 外的调用者可以为家庭增加孩子 — 而大多数父母并不希望如此),Person 类型实现 Iterable。这种方法还使得 for 循环可以遍历所有孩子。

清单 2. 增强的 for 循环:显示孩子

// Person.java 
import java.util.*; 
 
public class Person 
  implements Iterable<Person> 
{ 
  public Person(String fn, String ln, int a, Person... kids) 
  { 
    this.firstName = fn; this.lastName = ln; this.age = a; 
    for (Person child : kids) 
      children.add(child); 
  } 
  public String getFirstName() { return this.firstName; } 
  public String getLastName() { return this.lastName; } 
  public int getAge() { return this.age; } 
   
  public Iterator<Person> iterator() { return children.iterator(); } 
   
  public void setFirstName(String value) { this.firstName = value; } 
  public void setLastName(String value) { this.lastName = value; } 
  public void setAge(int value) { this.age = value; } 
   
  public String toString() { 
    return "[Person: " + 
      "firstName=" + firstName + " " + 
      "lastName=" + lastName + " " + 
      "age=" + age + "]"; 
  } 
   
  private String firstName; 
  private String lastName; 
  private int age; 
  private List<Person> children = new ArrayList<Person>(); 
} 
 
// App.java 
public class App 
{ 
  public static void main(String[] args) 
  { 
    Person ted = new Person("Ted", "Neward", 39, 
      new Person("Michael", "Neward", 16), 
      new Person("Matthew", "Neward", 10)); 
 
    // Iterate over the kids 
    for (Person kid : ted) 
    { 
      System.out.println(kid.getFirstName()); 
    } 
  } 
} 

上一页  1 2 3 4 5 6  下一页

Tags:关于 Java Collections

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接