论坛首页 入门技术论坛

把List<String> list中不存在Set<String> set的元素删除

浏览 3153 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-01-18  
import java.util.ArrayList;
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++只会大,部分数据就删不了
大家有什么办法实现这东西
   发表时间:2008-01-18  
判断条件改成判断是否到尾就能,但List 双向链,没有结尾判断,有别的实现方法不?
0 请登录后投票
   发表时间:2008-01-18  
iterater会维护size的....
0 请登录后投票
   发表时间:2008-01-18  
问题解决了if(!set.contains(s)){list.remove(s); j--;}
当有删除时让下标不变
网上都有挺多与到这种情况的,但我觉得这种会好,简单
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics