浏览 3153 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-01-18
import java.util.HashSet; import java.util.List; import java.util.Set; public class JavaTest { public static void main(String[] args) { List list=new ArrayList(); int i; for(i=0;i<=5;i++)list.add("a"+i); System.out.println("list size:"+list.size()); Set set=new HashSet(); set.add("a1"); set.add("a2"); for(int j=0;j<list.size();j++){ String s=(String)list.get(j); System.out.println(j); if(!set.contains(s))list.remove(s); } for(i=0;i<list.size();i++) System.out.println(list.get(i)); } } 程序作用删除list里不等于set的元素 结果: 0,1,2,3 a1,a2,a4 不知为何会得出这个结果来的。。。 搞不懂for循环,当删除一个时,list.size()减小,但j++只会大,部分数据就删不了 大家有什么办法实现这东西 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-01-18
判断条件改成判断是否到尾就能,但List 双向链,没有结尾判断,有别的实现方法不?
|
|
返回顶楼 | |
发表时间:2008-01-18
iterater会维护size的....
|
|
返回顶楼 | |
发表时间:2008-01-18
问题解决了if(!set.contains(s)){list.remove(s); j--;}
当有删除时让下标不变 网上都有挺多与到这种情况的,但我觉得这种会好,简单 |
|
返回顶楼 | |