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