删除ArrayList元素时的IndexOutOfBoundsException

Lul*_*Cop 0 java exception arraylist

我在这里有这个代码(使用lwjgl但是应该没有意义)尝试在按下esc键时暂停游戏.我使用带有键的ArrayList来跟踪按下的内容和不按下的内容.

public List<Integer> keys = new ArrayList<Integer>();

public void get() {
    if (isKeyDown(KEY_ESCAPE) && !keys.contains(KEY_ESCAPE)) {
        keys.add(KEY_ESCAPE);
        keyEscape();
    }
}

public void rem() {
    if (!isKeyDown(KEY_ESCAPE) && keys.contains(KEY_ESCAPE))
        keys.remove(KEY_ESCAPE);
}

private void keyEscape() {
    Screen.paused ^= true;
}
Run Code Online (Sandbox Code Playgroud)

这是由循环,这不叫get()rem()之后另一个一环,在这个顺序.这给了我一个真棒java.lang.IndexOutOfBoundsException: Index: 1, Size: 1keys.remove(KEY_ESCAPE);时候我放手ESC的.

有谁有分享的见解?

Laz*_*dis 6

KEY_ESCAPE的价值是多少?

它可能是值为1的int,因此不会删除具有该值的对象,而是删除位置1处的对象,该对象显然不存在.