日期:2014-05-20  浏览次数:20661 次

【求助】问一个关于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,就死循环了