有一个集合ls,里面有一些数据,还有一个集合lt,lt中存的全是整数,想去掉ls中lt存在的项,该怎么写。
比如:
- Java code
List ls=new ArrayList(); List lt=new ArrayList(); ls.add("a"); ls.add("b"); ls.add("c"); ls.add("d"); ls.add("e"); ls.add("f"); lt.add(1); lt.add(3);
要去掉ls的第一项和第三项,也就是ls.remove(1)和ls.remove(3),结果要是 ls=[a, c, e, f]
要是循环去的话,去掉第一项后,原来的第二项就变成第一项了,不知道该怎么写,新手求帮助!!
------解决方案--------------------------------------------------------
我测了一遍应该没问题了:
- Java code
List<String> sl = new ArrayList<String>(); sl.add("a"); sl.add("b"); sl.add("c"); sl.add("d"); sl.add("e"); sl.add("f"); sl.add("g"); sl.add("h"); List<Integer> il = new ArrayList<Integer>(); il.add(1); il.add(3); il.add(9); //将存放整数的list转换为数组 int[] i = new int[il.size()]; for (int j = 0; j < il.size(); j++) { i[j] = il.get(j); } //将数组从大到小排序 int temp; for (int m = 0; m < i.length; m++) { for (int n = 0; n < i.length-m-1; n++) { if(i[n]<i[n+1]){ temp = i[n]; i[n] = i[n+1]; i[n+1] = temp; } } } //遍历删除 for (int j = 0; j < i.length; j++) { //这里判断是因为9大于集合的size所以需要排除 if(i[j]<sl.size()){ sl.remove(i[j]); } } System.out.println(sl.toString());
------解决方案--------------------------------------------------------
- Java code
//仅供参考import java.util.*;class Test{ public static void main(String [] args) throws Exception { List ls=new ArrayList(); List lt=new ArrayList(); ls.add("a"); ls.add("b"); ls.add("c"); ls.add("d"); ls.add("e"); ls.add("f"); lt.add("b"); lt.add("d"); Iterator it=lt.iterator(); String i=null; while(it.hasNext()) { if(ls.contains(i=(String)it.next())) ls.remove(i); } System.out.println(ls); }}