1

I want to add a multidimensional Boolean Array to an ArrayList. How do I do that?

Below is an simple example:

public boolean[][] BooleanArray;
ArrayList<Boolean[][]> BooleanArrayList= new ArrayList<Boolean[][]>();

public void AddBooleanArrayToList(){
    BooleanArrayList.add(BooleanArray);
}

However this example does not work. This error will prompt:

The method add(Boolean[][]) in the type ArrayList<Boolean[][]> is not applicable for the arguments (boolean[][])

1 Answer 1

2

The problem here is that you defined the ArrayList to take 2D arrays of the wrapper class Boolean, but you are trying to add a 2D array of the primitive type boolean. Those are not the same type, hence the error. You are able to get away with this when you aren't storing arrays thanks to a nice little Java feature called auto-boxing, which converts between Boolean and boolean automatically, but auto-boxing isn't smart enough to work on arrays. The fix is simple; just capitalize the B in "boolean" in the declaration for BooleanArray. It should look like so:

public Boolean[][] BooleanArray;

Alternatively, (not recommended) you could manually box your array when you want to add it to the ArrayList like so:

BooleanArrayList.add(
        IntStream.range(0, BooleanArray.length)
        .mapToObj((i) -> IntStream.range(0, BooleanArray[i].length)
        .mapToObj((j) -> BooleanArray[i][j])
        .toArray(Boolean[]::new))
        .toArray(Boolean[][]::new));
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.