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>");
}