java中list.remove方法使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中list.remove方法使用相关的知识,希望对你有一定的参考价值。

public List updateProduct(List lists,String[] productId1)throws Exception
Connection conn=null;
PreparedStatement prep=null;
ResultSet rs=null;
List all=new ArrayList();
for (int i=0;i<productId1.length;i++)


lists.remove(new Integer(productId1[i]));


System.out.println();
try
for(int i=0;i<lists.size();i++)

Product product1=(Product)lists.get(i);
int productId=product1.getProductId();

System.out.println("剩下的商品Id="+productId);

String sql="select * from product where productId ="+productId;
conn= new DBConnection().getConnection();
//System.out.println("sql11111111111111="+sql);
prep=conn.prepareStatement(sql);
rs = prep.executeQuery();
while (rs.next())
Product product=new Product();

product.setProductId(rs.getInt("productId"));
product.setProductCode(rs.getString("productCode"));
product.setProductName(rs.getString("productName"));
product.setUnit(rs.getString("unit"));
product.setPremark(rs.getString("premark"));

all.add(product);




finally
if(prep!=null)
prep.close();
if(prep!=null)
prep.close();
if(conn!=null)
conn.close();

return all;


比如lists里面有51,52,58,59四个数,如何删除productId1中51,52这两个数
可是如果我不知道要删除元素的位置该怎么办呢 不能根据public E remove(int index) 来删除,
而且我想删的是数组中的一个或多个,product【i】也不是int型 也不能用lists.remove(new Integer(productId1[i])); 删除; 该怎么删除 string 型 productId1【i】值 虽然知道productId【i】的值是int型 我修改了下 for (int i=0;i<productId1.length;i++)


lists.remove(new Integer(new Integer(productId1[i]).intValue()));
System.out.println("测试输出="+new Integer(productId1[i]).intValue());



输出结果 测试输出=58
测试输出=59
剩下的商品Id=58
连接数据库成功
剩下的商品Id=59
连接数据库成功
剩下的商品Id=60
连接数据库成功
剩下的商品Id=61
连接数据库成功

可惜还是没删掉 如果剩下商品Id只有60,61就对了

/*我又改了改,哎,还要在学习啊,^_^*/
public List updateProduct(List lists,String[] productId1) throws Exception
Connection conn=null;
PreparedStatement prep=null;
ResultSet rs=null;
List all=new ArrayList();
/*
for (int i=0;i<productId1.length;i++)

lists.remove(new Integer(productId1[i]));

*/
for(int i=0;i<productId1.length;i++)
String pid=productId1[i].trim();
for(int j=0;j<lists.size();j++)
String oneid=(String)lists.get(j);
oneid=oneid.trim();
if(pid.equals(oneid))
lists.remove(j);
System.out.println("sxp debug:remove the id "+oneid);
break;




System.out.println();

try
for(int i=0;i<lists.size();i++)

//Product product1=(Product)lists.get(i);
//int productId=product1.getProductId();
String tempid=(String)lists.get(i);
tempid=tempid.trim();
int productId=Integer.parseInt(tempid);

System.out.println("剩下的商品Id="+productId);
String sql="select * from product where productId ="+productId;
conn= new DBConnection().getConnection();
//System.out.println("sql11111111111111="+sql);
prep=conn.prepareStatement(sql);
rs = prep.executeQuery();
while (rs.next())
Product product=new Product();

product.setProductId(rs.getInt("productId"));
product.setProductCode(rs.getString("productCode"));
product.setProductName(rs.getString("productName"));
product.setUnit(rs.getString("unit"));
product.setPremark(rs.getString("premark"));

all.add(product);




finally
if(prep!=null)
prep.close();
if(prep!=null)
prep.close();
if(conn!=null)
conn.close();

return all;
参考技术A ArrayList下的remove方法:

public boolean remove(Object o)

移除此列表中首次出现的指定元素(如果存在)。如果列表不包含此元素,则列表不做改动。更确切地讲,移除满足 (o==null ? get(i)==null : o.equals(get(i))) 的最低索引的元素(如果存在此类元素)。如果列表中包含指定的元素,则返回 true(或者等同于这种情况:如果列表由于调用而发生更改,则返回 true)。

因为int是object的子类,所以可以传入int类型参数来删除.
-----------------------------------------------------------

public E remove(int index)

移除此列表中指定位置上的元素。向左移动所有后续元素(将其索引减 1)。

也可以循环找出要删除的数的下标然后这个方法删除
参考技术B 因为list是有顺序的,先add的编号就小(从0开始),这样就可以通过remove(编号)的形式进行删除,之后后面的会编号依次变小(也就是说编号总是连续的)。举例:
List list = new linkedList();
list.add("0");
list.add("1");
list.remove(0);
结果就是:list.get(0) =1;
备注:如果再一次“list.remove(0);”那么list对象就是个空。
参考技术C 看你是用什么方法,可以用很多办法了呀;如果知道前两个,可以直接删除就行了。

以上是关于java中list.remove方法使用的主要内容,如果未能解决你的问题,请参考以下文章

java list的remove方法问题

java list的remove方法问题

java 的list.remove函数?

List中remove()方法的陷阱

Java中List 删除元素

debug底层java代码,对list中的数据去重的正确姿势,及对比java list remove正确使用方法与错误使用