Map
我在我的应用程序中使用了一些奇怪的问题。
我有一个对象列表 - Table
。每个对象都有一个字段,该字段是另一个类的对象的映射:
public class Table {
private Map<Integer, MyObject> objectsMap = new HashMap<Integer, MyObject>();
public void addToMap(int i, MyObject mOrder)
{
objectsMap.put(i, mOrder);
}
public MyObject getObject(int poz)
{
return objectsMap.get(poz);
}
}
public class MyObject {
private int info1;
private int info2;
public void setInfo(int i1, int i2)
{
this.info1 = i1;
this.info2 = i2;
}
public int[] getInfos()
{
return new int[]{this.info1, this.info2};
}
}
然后在我的主要活动中,我进行了一些初始化:
private List<Table> tableList = new ArrayList<Table>();
//...
public void initTableObject(Table myTable)
{
MyObject newObject = new MyObject();
newObject.setInfo(1,2);
myTable.addToMap(1, newObject);
MyObject newObject = new MyObject();
newObject.setInfo(3,4);
myTable.addToMap(2, newObject);
MyObject newObject = new MyObject();
newObject.setInfo(5,6);
myTable.addToMap(3, newObject);
MyObject newObject = new MyObject();
newObject.setInfo(7,8);
myTable.addToMap(4, newObject);
}
问题是当我想检查值时:
for (Table table : tableList) {
int[] info = table.getObject(4).getInfos();
Log.d("TAG","4: {" + info[0] + ", " + info[1] + "}");
}
当我有 1 个表对象时,一切正常。当我有 2 个或更多对象时,问题就开始了。如果在一些交互之后有 2 个元素(在这种情况下并不重要),我有问题。
每次,对象映射中的最后一个对象 - 即newObject
第一个 Table 对象上的数字 4 的值等于 2 元素的第一个对象值。第二个 Table 对象及其 MyObject 对象都可以。
我正在尝试一切,但我没有看到其他任何东西,所以这就是我在这里问的原因。
有人可以告诉我这里发生了什么,我收到了这个错误吗?