读书人

问一个关于iterator迭代器的写法

发布时间: 2012-10-24 14:15:58 作者: rapoo

【求助】问一个关于iterator迭代器的写法
一般用Iterator iterator = historicTaskInstanceInfoList.iterator();再进行迭代的话 无法使用这个类的方法, 只能使用迭代器里面的方法貌似... 这个iterator能不能像下面这样用呢? 谢谢了各位

[code=Java]
List <HistoricTaskInstanceInfo> unAssignedTaskList = new ArrayList <HistoricTaskInstanceInfo> ();

while(historicTaskInstanceInfoList.iterator().hasNext()){
if(historicTaskInstanceInfoList.iterator().next().getAssignee().equals(null)){
unAssignedTaskList.add(historicTaskInstanceInfoList.iterator().next());
}
}
[/code]


[解决办法]
不可以,这样你每次都是一个新的iterator,如果有一个元素的话,while就死循环了
[解决办法]

Java code
    public Iterator<E> iterator() {        return new Itr();    }
[解决办法]
List <HistoricTaskInstanceInfo> unAssignedTaskList = new ArrayList <HistoricTaskInstanceInfo> ();

while(historicTaskInstanceInfoList.iterator().hasNext()){
if(historicTaskInstanceInfoList.iterator().next().getAssignee().equals(null)) {
unAssignedTaskList.add(historicTaskInstanceInfoList.iterator().next()); //这里不能出现两遍iterator.next(),不然会出错!!!!
}
}

[解决办法]
Java code
for(Iterator<T> itr = list.iterator(); itr.hasNext();){    T t = itr.next();}
[解决办法]
一楼+1
每次循环都会得到一个iterator,就死循环了

读书人网 >J2SE开发

热点推荐