Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java ArrayList中的元素占据两个位置_Java - Fatal编程技术网

java ArrayList中的元素占据两个位置

java ArrayList中的元素占据两个位置,java,Java,我制作了一个LinkedList来存储状态对象,这是我创建的一个类。我可以按预期向列表中添加状态,但每当我在列表中尝试size()方法时,它总是返回我添加的元素数量的两倍。为什么要这样做?如果每个元素都有2个n值,那么如何使用get(n)方法 以下是用于创建并添加到列表中的代码: static ArrayList<State> stateTable = new ArrayList<State>(); stateTable.add(new State(new Item(0,

我制作了一个LinkedList来存储状态对象,这是我创建的一个类。我可以按预期向列表中添加状态,但每当我在列表中尝试size()方法时,它总是返回我添加的元素数量的两倍。为什么要这样做?如果每个元素都有2个n值,那么如何使用get(n)方法

以下是用于创建并添加到列表中的代码:

static ArrayList<State> stateTable = new ArrayList<State>();
stateTable.add(new State(new Item(0,0)));
static ArrayList stateTable=new ArrayList();
stateTable.add(新状态(新项(0,0)));
我要补充的是,添加到列表中的操作是在State对象的构造函数中完成的,这样所有创建的状态都会被放入stateTable中。 谢谢

我要补充的是,添加到列表中的操作是在构造函数内部完成的 用于状态对象,以便将所有创建的状态放入 状态表

如果您已经将状态添加到构造函数内的列表中,并且另外有一行

stateTable.add(
    new State(new Item(0,0))     // <= first time inside new State(...)
);                               // <= second time explicitely in this line
stateTable.add(
新状态(新项(0,0))//搜索.add(并确保没有在多个位置调用它)

如果您的ArrayList未标记为private,请将其标记为private

如果从方法返回ArrayList,请通过以下方式返回只读版本:Collection.unmodifiableList(stateTable)

如果您在一个方法或构造函数中加载数据,并且不打算在其他任何地方执行此操作,请执行以下操作:

private static final List<State> stateTable;

static
{
    final List<State> temp;

    temp = new ArrayList<State>();
    temp.add(new State(new Item(0,0)));

    stateTable = Collections.unmodifiableList(stateTable);
}
私有静态最终列表状态表;
静止的
{
最终名单;
temp=新的ArrayList();
临时添加(新状态(新项目(0,0));
stateTable=集合。不可修改列表(stateTable);
}

如果向其中添加对象,使用不可修改列表将导致程序崩溃。

arraylist不是LinkedList您在列表中添加了两次内容——代码中的某个地方您没有向我们显示。请不要让我们猜测。创建并发布一个,让我们自己测试它。哈哈,哇,我不知道我怎么没有意识到,谢谢T