需求:查询所有用户信息存放在list中,然后想要把管理员删除掉,这个怎么实现?

解决方案 »

  1.   

    创建一个新的list,把不是管理员的用户信息add进去就可以了
      

  2.   

    为什么要建一个新的list,直接在list中删除不行?
      

  3.   


    遍历这个list 把管理员权限的都 remove掉主要list在遍历过程中不要remove ,可以先把需要remove的index记录下来,遍历完成后再remove
      

  4.   

    怎样记录这个需要删除的对象的index?
      

  5.   


    算了 记录那个对象index 又需要一个list楼主估计不想这样,那就换个思路,只操作一个list
    List<Integer> datas = new ArrayList<Integer>();
    datas.add(1);
    datas.add(2);
    datas.add(3);
    datas.add(4);
    datas.add(5);
    datas.add(6);
    datas.add(7);

    int idx = 0; //被remove的总数
    for(int i=0;i<datas.size();i++){
    Integer item = datas.get(i);
    if(item%2==0){ //这里的判断就改成你的“如果是管理员”
    datas.remove(i-idx); //由于datas可能已经remove过数据所以当前item的index应该是i-idx
    idx++; //把已经remove的数+1
    }
    }

    for(Integer ttt:datas){
    System.out.println(ttt);
    }
    楼主 懂了吗?
      

  6.   

    哦对了 
     Integer item = datas.get(i);这句也要变成  Integer item = datas.get(i-idx);
    完整的就是
    List<Integer> datas = new ArrayList<Integer>();
    datas.add(1);
    datas.add(2);
    datas.add(3);
    datas.add(4);
    datas.add(5);
    datas.add(6);
    datas.add(7);

    int idx = 0; //被remove的总数
    for(int i=0;i<datas.size();i++){
    Integer item = datas.get(i-idx); //由于datas可能已经remove过数据所以当前item的index应该是i-idx
    if(item%2==0){ //这里的判断就改成你的“如果是管理员”
    datas.remove(i-idx); //同上
    idx++; //把已经remove的数+1
    }
    }

    for(Integer ttt:datas){
    System.out.println(ttt);
    }
      

  7.   

    public static void main(String[] args) {

    //移除 大于 3的元素
    List<Integer> list = new ArrayList<Integer>();
    list.add(0);
    list.add(1);
    list.add(2);
    list.add(3);
    list.add(4);
    list.add(5);


    // 方法 1
    Iterator<Integer>  i = list.iterator() ;
    while(i.hasNext()){
    Integer v = i.next();
    if(v > 3)
    i.remove();
    }
        
    /*
    // 方法 2
    for (int j = list.size() - 1; j >= 0 ; j--) {
    Integer v = list.get(j);
    if(v > 3)
    list.remove(j);
    }
    */

    System.out.println(list);

    }
      

  8.   


    恩 多久没用 Iterator 了,这样更好
      

  9.   

    谢谢 cscript 的热情帮助,再次感谢!
      

  10.   

    你从最后一个往第一个循环,然后remove也是ok的。
      

  11.   

    for(int i = 0; i < list.size(); i++){
        if(list.get(i)==管理员){ // if(list.get(i).equals("管理员"))
            list.remove(i)
        }
    }