繁体   English   中英

如何从android中的arraylist中删除元素

[英]How to remove a element from arraylist in android

我无法删除对象。如何从数组列表中删除对象?

我的代码

 List<kisi> x=new ArrayList<kisi>();
 x.add(new kisi("1","betül"));
 x.add(new kisi("2","hatice"));
 x.add(new kisi("3","selma"));
 kisi k=new kisi("2","hatice");

 for (int i = 0; i < x.size(); i++) {
 if (x.get(i).id==k.id) {
 Object obj = x.remove(i);
 break;
 }
 }

我的构造函数

public class kisi {
 public static String id="0";
 public static String ad="0"; 
public kisi(String id,String ad) { 
// TODO Auto-generated constructor stub 
this.id=id;
 this.ad=ad;
 }

kisi类的成员变量中删除static s。

还要注意

new kisi("1","betül")

因此,您的id是一个String

当您遍历列表比较ID时,可以使用==

Java中的==相同的比较,不是相等的比较。 这与C#中的字符串行为不同。

因此,您应该这样做:

for (int i = 0; i < x.size(); i++) {
  if (x.get(i).id.equals(k.id)) { //change here
    Object obj = x.remove(i);
    break;
  }
}

在这个简单的示例中,这不会引起问题,因为两个"2"字符串相同。 这使我得出结论,您的kisi构造函数中发生了一些有趣的事情。 这是我使用过的代码,代码按原样工作:

public class kisi {    
  public String id;    
  public kisi(String id, String string2) {
    this.id = id;
  }    
}

这样的构造函数将在没有.equals调用的情况下破坏代码:

public kisi(String id, String string2) {
  this.id = id + string2;
}  

为了在遍历列表时安全地从列表中删除一个元素,您需要使用迭代器来进行操作。 否则,您可能会得到奇怪的结果!

在Java中的foreach循环中调用remove

在Java中,遍历列表时从列表中删除项目的唯一方法是通过Iterator。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM