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++只会大,部分数据就删不了
大家有什么办法实现这东西
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++只会大,部分数据就删不了
大家有什么办法实现这东西
解决方案 »
- 对象数组 一个小程序,有一行不知道怎么修改,求解,多谢!
- linux下java调用C++库中函数的问题
- 又冇得结果?兄弟呀帮我运行一下?
- 美女的烦恼?
- 如何在excel里控制单元格下拉框显示,显示内容从数据库中取,或者调用javabean里的方法,急用。
- 简单问题,怎么把int转换成4个字节数组(byte[]),JDK里应该有这样的工具吧
- java浙大翁恺的视频(0-30)
- help,怎么在一个ByteArrayOutputStream中加一个file,
- 我正在做一个JAVA的绘图软件,目标功能类似PHOTOSHOP,请教有经验的朋友
- 超级小问题,谁来帮帮我!
- 考试题,打转的
- Spring声明式事务不能回滚, 高手帮忙!
public class ListSet
{
public List<String> lzTest(List<String> list,Set<String> set)
{
list.retainAll(set);
return list;
}
}
一般情况下,使用Java提供的retainAll()方法来求交集吧...
这个类应该能用,传入两个集合,最后返回的list就是楼主要求的集合...
String s = (String) list.get(j);
//System.out.println(j);
if (!set.contains(s)) {
list.remove(s);
j--; // 在这个地方加入这行代码,因为当移除了list中的项,那么list.size()会少1,那么j--和j++抵消 这样保证list全部项都是可以遍历到的
}
}