使用索引(i)在for循环中声明变量

Rmi*_*372 0 java variables android loops dynamic

我非常接近让这个项目发挥作用,但我坚持一件让我发疯的事情,我在研究中找不到任何有用的东西.

我需要做的是每次for循环通过记录集时声明一个新变量,但我需要在变量名中使用索引值(i).

我需要帮助的是 Bottles o[i] = new Bottles();

我需要在每次for循环再次通过时定义一个新变量,例如,我的变量最终应该是o1,o2,o3等.我现在在[i]上遇到语法错误,我可以似乎没有找到如何做到这一点.

对我在这里缺少什么的想法?

private void getBottles() {
        try {
            m_bottles = new ArrayList<Bottles>();
            for (int i = 0; i < bottleNamesMap.size(); i++) {
                Bottles o[i] = new Bottles();
                o[i].setbottleID(bottleIntMap.get("bottleID" + i));
                o[i].setname_abbr(bottleNamesMap.get("name" + i));
                o[i].setorigin(bottleNamesMap.get("origin" + i));
                o[i].setbottlePicture(bottleNamesMap.get("bottlePicture" + i));
                o[i].setprice_reported(bottleNamesMap.get("price" + i));
                o[i].setdistillery(bottleNamesMap.get("distillery" + i));
                o[i].setagg_score(bottleIntMap.get("aggscore" + i));
                m_bottles.add(o[i]);
                Thread.sleep(2000);
                Log.i("ARRAY", "" + m_bottles.size());
            }
          } catch (Exception e) {
            Log.e("BACKGROUND_PROC", e.getMessage());
          }
          runOnUiThread(returnRes);
      }
Run Code Online (Sandbox Code Playgroud)

Joe*_*Joe 5

 Bottles o[i] = new Bottles();
Run Code Online (Sandbox Code Playgroud)

应该:

  Bottles o = new Bottles();
Run Code Online (Sandbox Code Playgroud)

然后放下[i].new关键字将在每次迭代时创建一个新对象.

            Bottles o = new Bottles();
            o.setbottleID(bottleIntMap.get("bottleID"+i));
            o.setname_abbr(bottleNamesMap.get("name"+i));
            o.setorigin(bottleNamesMap.get("origin"+i));
            o.setbottlePicture(bottleNamesMap.get("bottlePicture"+i));
            o.setprice_reported(bottleNamesMap.get("price"+i));
            o.setdistillery(bottleNamesMap.get("distillery"+i));
            o.setagg_score(bottleIntMap.get("aggscore"+i));
            m_bottles.add(o);
Run Code Online (Sandbox Code Playgroud)