java.lang.IndexOutOfBoundsException:集合不';在索引4处不包含元素

java.lang.IndexOutOfBoundsException:集合不';在索引4处不包含元素,java,Java,为什么上面的代码抛出了一个索引outofboundsException 有人能帮我吗?我想这是因为您没有先检查元素的大小就从集合中删除了元素。您应该检查的是: if (mWeakHashMap.size() > idx) { mUploadThreads.remove(mUploadThreads.elementAt(idx)) } HashMap有一个constainsKey和一个remove方法,您可以使用该方法在尝试删除键之前有效地检查该键是否在映射中 下面是一个基

为什么上面的代码抛出了一个
索引outofboundsException


有人能帮我吗?

我想这是因为您没有先检查元素的大小就从集合中删除了元素。您应该检查的是:

if (mWeakHashMap.size() > idx) {
        mUploadThreads.remove(mUploadThreads.elementAt(idx))
}

HashMap
有一个
constainsKey
和一个
remove
方法,您可以使用该方法在尝试删除
键之前有效地检查该键是否在映射中

下面是一个基本示例,我向HashMap添加两个元素,然后删除其中一个元素

if(mUploadThreads.size() > idx)

希望这有帮助。

您正在检查
mWeakHashMap.size
并从
mUploadThreads
中删除-这没有意义…非常抱歉,我没有清楚地解释上面的代码:mWeakHashMap是mUploadThread的引用。您验证过它们指向相同的数据吗?@Jackson“mUploadThreads”的类型是什么?
import java.util.HashMap;

public class HashMapExample {

    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("Key1", "Value1");
        map.put("Key2", "Value2");

        System.out.println(String.format("Map size: %d", map.size()));

        if (map.containsKey("Key2")) {
            map.remove("Key2");
        }

        System.out.println(String.format("Map size: %d", map.size()));
    }
}

/* Output
Map size: 2
Map size: 1
*/
if (mWeakHashMap.constainsKey("<Your_Key>")) {
        mUploadThreads.remove("<Your_Key>");
}