-1

私は Integer arraylist を持っています。各 for でクリアしてから、もう一度入力したい.私のコードは次のとおりです。

private static int myMethod(int prim){

    ArrayList<ArrayList<Integer>> number = new ArrayList<ArrayList<Integer>>();
    ArrayList<Integer> sublist = new ArrayList<Integer>();
    ArrayList<Integer> temp = new ArrayList<Integer>();

    for (int x = 2; x < prim; x++ ){

        for (int power = 0; power < prim - 1; power++){ 
            // in this loop sublist 
            //will be fill
            int i=(int)((Math.pow(x, power))%prim);
            sublist.add(i);     
        }

        number.add(sublist);

    }
}

プリムはたとえば7なので、番号配列リストが必要なので、これ=>

[[1,2,4,1,2,4][1, 3, 2, 6, 4, 5]...] 

ただし、number arraylist は次の形式です。

[[1,2,4,1,2,4,1, 3, 2, 6, 4, 5][1,2,4,1,2,4,1, 3, 2, 6, 4, 5]]

私を助けてください :(

4

3 に答える 3

3

ただクリアすることはできませんsublistsublistループするたびに新しいものを作成する必要があります。

for (int x=2;x<prim;x++ ){
    sublist = new ArrayList<Integer>();
    for (int power=0;power<prim-1;power++){ // in this loop sublist //will be fill
        int i=(int)((Math.pow(x, power))%prim);
        sublist.add(i);     
    }

    number.add(sublist);

}

に追加sublistするとnumber参照が追加されます。コピーされsublistません。を呼び出すだけでは、毎回sublist.clear()空のリストが追加されます。number

于 2013-01-31T18:05:23.780 に答える
0

forループでリストを作成...

ArrayList<ArrayList<Integer>>  number=new ArrayList<ArrayList<Integer>>();
       for (int x=2;x<prim;x++ ){
    // create sublist rather than outside the loop
    ArrayList<Integer> sublist = new ArrayList<Integer>();
            for (int power=0;power<prim-1;power++){ // in this loop sublist //will be fill
                int i=(int)((Math.pow(x, power))%prim);
                sublist.add(i);     
            }

            number.add(sublist);

            }
于 2013-01-31T18:05:32.033 に答える
0
ArrayList<ArrayList<Integer>>  number=new ArrayList<ArrayList<Integer>>();
    ArrayList<Integer> sublist=null;
    ArrayList<Integer> temp=new ArrayList<Integer>();

    for (int x=2;x<prim;x++ ){
     sublist=new ArrayList<Integer>();
        for (int power=0;power<prim-1;power++){ // in this loop sublist //will be fill
             int i=(int)((Math.pow(x, power))%prim);
            sublist.add(i);     
        }

        number.add(sublist);

        }
于 2013-01-31T18:06:16.087 に答える