当前位置: 代码迷 >> J2SE >> 问一个关于iterator迭代器的写法
  详细解决方案

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

热度:9780   发布时间:2013-02-25 00:00:00.0
【求助】问一个关于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,就死循环了
  相关解决方案