3

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.

Community
  • 1
  • 1
rajya vardhan
  • 1,121
  • 4
  • 16
  • 29

2 Answers2

7

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));
Razvan
  • 9,925
  • 6
  • 38
  • 51
  • 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. – rajya vardhan Aug 19 '12 at 19:12
  • 1
    So you're saying that timeTableList should be mutable. Than you need to use a for loop – Razvan Aug 19 '12 at 19:16
4

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)));
Vikdor
  • 23,934
  • 10
  • 61
  • 84
  • 1
    No guarantee that nCopies returns an ArrayList if that was a requirement. – Paul Tomblin Aug 19 '12 at 18:57
  • 2
    Completely agree, but I doubted if ArrayList was really a requirement and List wouldn't suffice here. – Vikdor Aug 19 '12 at 18:59
  • 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. – rajya vardhan Aug 19 '12 at 19:13