java - 如何从 arrayList 中删除一项

标签 java android

假设我有

List<Integer> mIds = new ArrayList<Integer>();
mIds.add(0,10);
mIds.add(1,10);
mIds.add(2,10);

我只想删除 listview 中的一项,但当我这样做时,它会删除 ArrayList 中的所有项目。你知道为什么吗?

int j=-1;
for (int i=0; i < mIds.size(); i++){
     if (mIds.get(i) == modifier.getId()){
         j=i;
         break;
     }
}
if (j != -1){
    mIds.remove(j);
}

编辑:抱歉大家,我的问题是另一个问题;但我认为这与删除列表项有关。感谢大家的帮助

最佳答案

如果您考虑从 List 中删除元素的值,则 List 中的所有元素都将删除,因为所有元素都具有相同的值。

考虑索引来删除元素

所以只需使用

 List<Integer> mIds = new ArrayList<Integer>();
 mIds.add(0,10);
 mIds.add(1,10); // *
 mIds.add(2,10);

 mIds.remove(1); // 1 is index 

现在 * 元素将被删除。

针对您的情况

mIds.remove(modifier.getId()); 

现在考虑您的代码。

    List<Integer> mIds = new ArrayList<Integer>();
    mIds.add(0,10);
    mIds.add(1,10);
    mIds.add(2, 10);

    int j=-1;
    for (int i=0; i < mIds.size(); i++){
        if (mIds.get(i) == 10){ // 0th element is 10
            j=i; //then j=0
            break; // breaks the for loop
        }
    }
    if (j != -1){ // j=0 and this is true
        mIds.remove(j); // now 0th element will remove
    }

所以你的代码工作正常。没有办法删除所有元素,因为这个 remove() 在循环之外运行,所以肯定会删除一个或零个元素。

关于java - 如何从 arrayList 中删除一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21405928/

相关文章:

android - 如何在 Eclipse 中使用来自 PhoneGap Build 和 PhoneGap Android 项目的相同源代码

java - JBoss 将 ROOT.WAR 重命名为默认值

java - 使用 IntelliJ 或 Play 时如何使 "Java Hot Spot MaxPermSize"警告消失?

java - 没有额外空间的 O(n) 中的反转堆栈不会发生

android - 带有多个非强制性过滤器的房间 DAO

java - 使用 Java 数组列表

java - 无法找到 Urbanairship.provider 的提供商信息

java - Apache CXF 作为 Restful API 的客户端 - 未找到类的消息正文编写器

java - Hibernate @Async future 结果和延迟初始化异常

java - 当启动的 Activity 完成时,启动新 Activity 的 startActivityForResult 是否通知调用 Activity?