3

以下行将使用 9 个值为 true 的元素初始化 arraylist。

public ArrayList<Boolean> timeTable = new ArrayList<Boolean>(Collections.nCopies(9, true));

但是我怎样才能初始化arraylist的arraylist呢?

public ArrayList<ArrayList<Boolean>> timeTable = new ArrayList<ArrayList<Boolean>>(Collections.nCopies(9, true));

这应该意味着外部arraylist有9个内部arraylist,每个内部arraylist有9个具有真值的元素。

类似于如何在 Java 中使用全零初始化 ArrayList? 但不完全一样...

场景是我需要维护每月的每日时间表列表。现在每天的时间表将只有 9 个条目,所以不可变就可以了。但是每个月都需要附加月度清单。所以它不能是一个数组列表。

4

2 回答 2

7

鉴于此行形式 java docs:“返回一个不可变的列表,由 n 个指定对象的副本组成”

public ArrayList<Boolean> timeTable = new ArrayList<Boolean>(Collections.nCopies(9, true));

public ArrayList<ArrayList<Boolean>> timeTableLists = new ArrayList<ArrayList<Boolean>>(Collections.nCopies(9, timeTable));
于 2012-08-19T18:57:33.513 回答
4

首先,建议尽可能使用接口类型。那会让你的

ArrayList<ArrayList<Boolean>> -> List<List<Boolean>>. 

然后,初始化语句将变为

public List<List<Boolean>> timeTable = Collections.nCopies(9, (Collections.nCopies(9, true)));
于 2012-08-19T18:54:14.230 回答