所以,我有这段代码,基本上我想将一个String Array放入ListArray的内部,然后将该ListArray放入另一个ListArray的内部。虽然我知道如何放置新的Array对象,但似乎找不到找到将新的ListArray对象放置到另一个ListArray的方法。

import java.util.ArrayList;
import java.util.List;


public class HelloWorld
{

  public static void main(String[] args)
  {

    ArrayList<List<String[]>> menues = new ArrayList<>();
    ArrayList<String[]> items = new ArrayList<String[]>();

    String price = "$12";

    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 5; j++) {
            String name = "Item Code-" + String.valueOf(i) + String.valueOf(j);
            items.add( new String[]{name, price} );
        }
      menues.add(items); // This line is the cause
    }

    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 5; j++) {
            System.out.println(menues.get(i).get(j)[0]);
        }
    }

  }
}


我期望的结果是

Item Code-00
Item Code-01
Item Code-02
Item Code-03
Item Code-04
Item Code-10
Item Code-11
Item Code-12
Item Code-13
Item Code-14
Item Code-20
Item Code-21
Item Code-22
Item Code-23
Item Code-24


我得到的结果(基本上只是重复同一件事)

Item Code-00
Item Code-01
Item Code-02
Item Code-03
Item Code-04
Item Code-00
Item Code-01
Item Code-02
Item Code-03
Item Code-04
Item Code-00
Item Code-01
Item Code-02
Item Code-03
Item Code-04

最佳答案

您需要在循环内移动items的创建:

for (int i = 0; i < 3; i++) {
    ArrayList<String[]> items = new ArrayList<String[]>();
    for (int j = 0; j < 5; j++) {
        String name = "Item Code-" + String.valueOf(i) + String.valueOf(j);
        items.add( new String[]{name, price} );
    }
    menues.add(items); // This line is the cause
}


否则,请重新添加相同的items,这将导致外部列表包含相同列表3次。

10-06 10:44