如何批量删除list循环出来的值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何批量删除list循环出来的值?相关的知识,希望对你有一定的参考价值。

我的信息是用list从数据库中循环出来的值。
<%foreach (AnycallMODEL.kehu kh in kehulist)
%>
<%=kh.Kehuid %>,
<%=kh.Kehuname %>
<%%>
循环出来的。然后我的意思是在循环出来后有一个全选按钮,点击了以后都选中了,然后点击删除按钮把这些选中的都删除掉。就是这个意思了、

list.clear()可以一次性清空所有元素。list.retainAll(Collection c)可以移除所有不在c里的元素,list.removeAll(Collection c)可以移除所有在c里的元素。其它的情况,只好一个个删了。

如果是数据库的话,就必须读出所有想删除的记录,比如你说的“有一个全选按钮,点击了以后都选中了,然后点击删除按钮”,那么服务器后台收到删除按钮发送的那些kh.Kehuid,就将所有这些id都用“,”隔开拼接起来,比如“1,3,4,6”这样一个字符串,然后用类似
DELETE * FROM kehu WHERE Kehuid in (......)
....那里就是这个字符串,就可以批量删除数据库内数据了。但这个其实不是Java的范畴而是SQL的范畴了。
参考技术A 对于java list集合,要一次性溢出多条数据实现方法:
首先,可以先定义个相同的list,比如原本的List存到是String 类型,那么就再定义个存String类型的List;
然后,在循环list时,把要批量删除的元素添加到新建的list中,若说,本身就已经存在一个要移除的集合列表,则可直接将newList指向该列表;
最后,在循环list结束后,确定不需要再移除其他元素了,就调用oldList.removeAll(newList);
通过以上代码就可以把oldList跟newList的交集从oldList中移除
参考技术B 没太没明白,貌似你是想在页面操作是吧,其实道理是一样的,本身就是个数组,你的全选按钮,可以做个复选框。根据位置选择删除,其实程序上实现来讲还是一个个删除的,全部删除应该只有clear和removeAll,你根本不用弄什么全部选中。 参考技术C 用一个for循环遍历List时,不能删除其中的元素。

用Iterator操作即可。

还有 Pro类要重写一下 toString方法。这样System.out.println里才能打印出来。

import java.util.*;

public class ListTest
public static void main(String[] args)

List<Pro> list = new ArrayList();
Pro p1 = new Pro("1000","1000");
Pro p2 = new Pro("1001","1002");
Pro p3 = new Pro("1003","1004");
Pro p4 = new Pro("1005","1006");
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);

for (Iterator<Pro> i = list.iterator(); i.hasNext();)
Pro o = i.next();
if(o.getProid().equals(o.getProName()))
i.remove();


System.out.println(list);



class Pro
private String proid;
private String proName;

public String getProid()
return proid;

public void setProid(String proid)
this.proid = proid;

public String getProName()
return proName;

public void setProName(String proName)
this.proName = proName;

public Pro(String proid, String proName)
super();
this.proid = proid;
this.proName = proName;

public Pro()


public String toString()
return proid + ":" + proName;

参考技术D 用JS选中标签然后把里面的数据删除掉 第5个回答  2012-09-11 我觉得也只有一条条的删,你list.size()有多大,你就得在循环里面删几次,不一定要一次删,java运行很快的,这点是看不来的追问

我现在提问的的是aspx的,

大概就是这样的,表里的值是list循环出来的。点击表的复选框,然后删除,,,也可以全选批量删除,跪求大神帮忙

追答

这个也只有一条条的删,你可以现在前台把要删除的信息的id组装成数组,list之类的,传到后台在一条条的删吧。

mybatis的批量删除操作

需求描述:将符合某条件的几条记录删除

解决思路:对于多个id,可以使用sql关键词 in ,只要满足数据库的id在你的id集合或者list中,就删除,从而实现批量删除。循环delete方法是在是low到爆,就不再提了。

代码:

List<OhSysPriRoleOrg> roList =  (List<OhSysPriRoleOrg>)dao.findForList("OhSysPriRoleOrgMapper.getResByRoleIdAndOrgId",paramMap);
//删除
dao.batchDelete("XXXRoleOrgMapper.deleteById",roList);
mapper中的sql:
<delete id="deleteById" parameterType="String">
delete from <include refid="tableName"></include>
where
role_org_id in
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item.roleOrgId}
</foreach>
</delete>

总结:注意用好foreach就行,其中的collection是什么类型的一定要对应好。











以上是关于如何批量删除list循环出来的值?的主要内容,如果未能解决你的问题,请参考以下文章

怎么用java同时实现批量删除,批量修改

mybatis的批量删除操作

sql server中如何快速批量删除表里的百万条记录!直接用delete top(50000)还是有点慢...

如何快速删除大批量数据

刚学php 后台批量删除问题

Linux 批量创建user和批量删除用户