List,iterator数据源

你可以定义一个数组节点,其公式设置为返回java.util.List,或java.util.iterator对象。如果你已经有一个用来选择学生的类StudentSelector代码如下表,该类定义两个方法,一个是listSex,指定性别返回学生列表,一个是iteratorSex,是指定性别返回一个枚举对象。

public class StudentSelector {
    static Student[] students = new Student[] {
            new Student("王小鸭", 16, "女", 90),
            new Student("崔永远", 17, "男", 99),
            new Student("水均溢", 18, "男", 85)
        };
    public List listSex(String sex) {   // 得到指定性别的学生列表
        List result = new ArrayList();
        for (int i = 0; i < students.length; i++) {
            if (students[i].getSex().equals(sex)) {
                result.add(students[i]);
            }
        }
        return result;
    }
    public Iterator iteratorSex(String sex) {  // 得到指定性别的学生枚举对象
        return listSex(sex).iterator();
    }
}

于是,你可以在节点公式中定义如下图(a)或图(b),得到指定性别的学生列表。

提示:

  1. java数组节点中定义的公式,不必一定是数组类型,也可以是java.util.List,和java.util.Iterator等其他类型,java数组节点这个名称实际上是一个宽泛的集合概念;
  2. 本例中指定性别是男,当然,你也可以将其替换为一个参数,这个参数值可能是从web表单中得到。