日期:2014-05-20  浏览次数:20690 次

求段代码。。。。!
有一个集合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);

  }
}