在一个 Class 中设置另一个 Class 中的 ArrayList 项

Setting ArrayList items in one Class from another Class

有一个 foo class 和一个名为 msgstoboodouble msg ArrayList 以及一个方法 setMsg(int index, double input) 来改变 msgstoboo.

有一个 networkoffoos class 和一个名为 listoffoos 的 foo 对象的 ArrayList。有一个updatefoomsg方法:

public void updatefoomsg (ArrayList<ArrayList<Foo>> Foonetwork)
   {
     for(int foolayer = 0; foolayer< foonetwork.size(); foolayer++)
       for(int fooinlayer = 0; fooinlayer< foonetwork.get(foolayer).size(); fooinlayer++)
         for(int msginfoo = 0; msginfoo < foonetwork.get(foolayer).get(fooinlayer).msgstoboo.size(); msginfoo++)
             Foonetwork.get(foolayer).get(fooinlayer).setMsg(msginfoo,somerandomvalue)
   }

updatefoomsg 的目标是更改 msgstooboo 中各个消息的值。但是,foo class ArrayList `msgstoboo' 中的值没有改变。为什么会这样,我该如何解决?先感谢您。

更新:这里是整个 foonetworkoffoos classes

 public class foo
 {
  ArrayList<Double> msgstoboo = new ArrayList<Double>(Double);
  public foo(int numofmessages)
    {
     for (int i = 0; i < numofmessages; i++)
         {
         msgstoboo.add(1); 
         }
    }
  public void setMsg(int index, double input)
  {
      msgstoboo.set(index,input);
  }

&&

public class networkoffoos
{
    ArrayList<ArrayList<foo>> foonetwork = new ArrayList<ArrayList<foo>>();
    public void networkoffoos(int numoffoos)
    {
        for(int i = 0; i < numoffoos; i++)
        foonetwork.add(new foo(somenumberofmsgs))
    }
    //**AND THE "updatefoomsg" method included in this post**
}

以下适合我。进行了一些小改动,因为您的代码无法编译。希望对你有帮助。

import java.util.ArrayList;

public class test {
    private static ArrayList<ArrayList<Foo>> foonetwork = new ArrayList<ArrayList<Foo>>();

    public static void main(String[] args){
        networkoffoos(5);
        updatefoomsg(foonetwork);
    }

    public static void networkoffoos(int numoffoos) {
        for(int i = 0; i < numoffoos; i++) {
            ArrayList<Foo> fooArrayList = new ArrayList<Foo>();
            fooArrayList.add(new Foo(10));
            foonetwork.add(fooArrayList);
        }
    }

    public static void updatefoomsg (ArrayList<ArrayList<Foo>> foonetwork) {
        for(int foolayer = 0; foolayer< foonetwork.size(); foolayer++)
            for(int fooinlayer = 0; fooinlayer< foonetwork.get(foolayer).size(); fooinlayer++)
                for(int msginfoo = 0; msginfoo < foonetwork.get(foolayer).get(fooinlayer).msgstoboo.size(); msginfoo++)
                    foonetwork.get(foolayer).get(fooinlayer).setMsg(msginfoo,3);
    }
}

和你的Fooclass

import java.util.ArrayList;

public class Foo {
    ArrayList<Double> msgstoboo = new ArrayList<Double>();

    public Foo(int numofmessages) {
        for (int i = 0; i < numofmessages; i++) {
            msgstoboo.add(Double.valueOf(1));
        }
    }

    public void setMsg(int index, double input) {
        msgstoboo.set(index, input);
    }
}