Różnica między Arrays.asList (tablica) a nową ArrayList <Integer> (Arrays.asList (tablica))

Jaka jest różnica pomiędzy

1.List<Integer> list1 = new ArrayList<Integer>(Arrays.asList(ia));  //copy
2.List<Integer> list2 = Arrays.asList(ia);

gdzieia jest tablicą liczb całkowitych.

Dowiedziałem się, że niektóre operacje nie są dozwolonelist2. dlaczego tak jest? jak jest przechowywany w pamięci (referencje / kopia)?

Kiedy tasuję listy,list1 nie wpływa na oryginalną tablicę, alelist2 robi. Ale nadallist2 jest nieco mylące.

W jaki sposóbArrayList Upcasted do listy różni się od tworzenia nowychArrayList

list1 differs from (1)
ArrayList<Integer> list1 = new ArrayList<Integer>(Arrays.asList(ia));

questionAnswers(13)

yourAnswerToTheQuestion