rajya vardhan
rajya vardhan

Reputation: 1131

how to initialize arraylist of arraylist

Following line will initialize arraylist with 9 elements with value true.

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

But how can i initialize arraylist of arraylist?

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

It should mean that outer arraylist has 9 inner arraylist and each inner arraylist has 9 elements with true value.

Similar to How can I initialize an ArrayList with all zeroes in Java? But not exactly same...

Scenario is that i need to maintain a monthly list of daily timetables. Now daily timetable will have only 9 entries, so immutable is fine. But monthly list needs to be appended each month. So it can't be an arraylist.

Upvotes: 3

Views: 5069

Answers (2)

Razvan
Razvan

Reputation: 10101

Given this line form java docs: "Returns an immutable list consisting of n copies of the specified object"

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

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

Upvotes: 7

Vikdor
Vikdor

Reputation: 24134

Firstly, it is recommended to use interface types wherever possible. That would make your

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

Then, the initialization statement would become

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

Upvotes: 4

Related Questions