您的位置:首页 > 产品设计 > UI/UE

个人对List接口中的iterator方法的使用了解

2009-03-29 00:03 330 查看
      说来实在惭愧,做web已经有一年左右,对迭代器的了解却是略知一二。记得以前老师讲的时候,对这种东西不会去苛意得记下来,包括所有的关于基础方面的东西,尤其是IO流方面,那我对他的认识就是完全混乱的理解。对于初学程序语言来讲,我想谁也不会去把所有的基础弄到非常的深入(这只是我的个人看法),只是用到的时候才会去亲身的领悟他。

      好了,来说一下我在这次程序中遇到的问题。我要写一个程序,有两个表,找出在老表中的数据是在新表中没有的。这个实现非常简单,只是做个比较即可。

      程序如下:

       

Query query = session.createQuery("select menu,url from SysMenu2 where url != ''"); //老菜单集合
List<String> oldList = query.list();  //从数据库中得到的所有菜单url

Query query1 = session.createQuery("select menu,url from SysMenu where url != ''"); //新菜单集合
List newList = query1.list();  //从数据库中得到的所有菜单url

Iterator it = oldList.iterator();

while(it.hasNext()){
if(newList.contains(it.next())){
it.remove();
}
}
Iterator its = oldList.iterator();
while(its.hasNext())
{

System.out.println((String)its.next());

}
  

 

      而对于在之前使用的则是通过for去遍历的List的值,但是每次在remove一个元素之后,第二个元素会跳到一个元素的位置,这样一来,做出的操作肯定是不对的。最后询问别人,才知道是需要使用Iterator,第一次使用的时候,本代码中的Iterator二次赋值是没有进行的,当时查出的是空值,后来明白了当使用Iterator后,游标会到达栈底,需要重新再赋一次值才可以遍历。就是这么简单。

     在这里说明一下,这只是我个人对这块的一个理解描述,希望可以帮到一些初级者。如果有的朋友看到,觉得这些东西非常简单,不用这么苛意的去描述,就当你什么都没看到。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐