Arrays don't override the implementation of Object's equals, so, since list.contains() uses equals to determine if an element appears in the List, it will only return true if you are searching for the exact array object you added to the List. Therefore list.contains(arr[1]) will return true, but list.contains(temp) won't, since temp and arr[1] are different objects (even though they contain the exact same elements).
You can use a List<List<Integer> instead of a List<int[]> in order for list.contains() to function as you expect (since the common implementations of the List interface do override Object's equals).