list 清除指定对象 需求:查询所有用户信息存放在list中,然后想要把管理员删除掉,这个怎么实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 创建一个新的list,把不是管理员的用户信息add进去就可以了 为什么要建一个新的list,直接在list中删除不行? 遍历这个list 把管理员权限的都 remove掉主要list在遍历过程中不要remove ,可以先把需要remove的index记录下来,遍历完成后再remove 怎样记录这个需要删除的对象的index? 算了 记录那个对象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); }楼主 懂了吗? 哦对了 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); } 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); } 恩 多久没用 Iterator 了,这样更好 谢谢 cscript 的热情帮助,再次感谢! 你从最后一个往第一个循环,然后remove也是ok的。 for(int i = 0; i < list.size(); i++){ if(list.get(i)==管理员){ // if(list.get(i).equals("管理员")) list.remove(i) }} 关于jsp+servlet+javabean开发的在线音乐试听系统 求助!想做一个ACM评判系统!! 兄弟们。。。帮帮忙看下哈。。。。。 struts2 标签问题 myeclipse自动生成pojo 怎么把当天发的新闻旁边显示 new图标 调用WSDL2Java生成客户端代码时出错!急!!!!!!!! 关于struts标签的使用有几个问题 请问WebService是什么东西呀。怎么写程序调用它呀。 送高分啊! 用脚本语言写国家、省份和城市之间的动态关联 java.sql.SQLRecoverableException: 关闭的语句
遍历这个list 把管理员权限的都 remove掉主要list在遍历过程中不要remove ,可以先把需要remove的index记录下来,遍历完成后再remove
算了 记录那个对象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);
}
楼主 懂了吗?
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);
}
//移除 大于 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);
}
恩 多久没用 Iterator 了,这样更好
if(list.get(i)==管理员){ // if(list.get(i).equals("管理员"))
list.remove(i)
}
}