Assim como no StringBuilder , existem três maneiras de criar um ArrayList:
ArrayList list1 = new ArrayList();
ArrayList list2 = new ArrayList(10);
ArrayList list3 = new ArrayList(list2);
O primeiro diz para criar um espaço contendo um ArrayList para o número padrão de elementos, mas não para preencher qualquer slots ainda. O segundo diz para criar um ArrayList contendo um número específico de slots, mas novamente não atribuir nenhum. O último exemplo diz ao Java que nós queremos fazer uma cópia de outro ArrayList. Copiamos o tamanho e o conteúdo desse ArrayList. Concedido, list2 está vazio neste exemplo, por isso não é particularmente interessante.
Embora estes sejam os únicos três construtores que você precisa conhecer, você precisa aprender algumas variantes dele. Os exemplos anteriores eram o antigo modo pré-Java 5 de criar um ArrayList . Eles ainda funcionam e você ainda precisa saber que eles funcionam. Você também precisa saber a maneira nova e melhorada. O Java 5 introduziu generics, que permitem especificar o tipo de classe que o ArrayList conterá.
ArrayList<String> list4 = new ArrayList<String>();
ArrayList<String> list5 = new ArrayList<>();
Java 5 permite que você diga ao compilador qual seria o tipo especificando-o entre < e > . A partir do Java 7, você pode até mesmo omitir esse tipo do lado direito. Os < e > são ainda necessários, no entanto. Isso é chamado de operador de diamante porque <> parece um diamante.
Apenas quando você pensou que sabia tudo sobre a criação de um ArrayList , há mais uma coisa que você precisa saber. ArrayList implementa uma interface chamada List . Em outro palavras, um ArrayList é uma List. Você aprenderá sobre interfaces no Capítulo 5. No meio tempo, só sei que você pode armazenar uma ArrayList em uma variável de referência de List, mas não vice versa. A razão é que List é uma interface e interfaces não podem ser instanciadas.
List list6 = new ArrayList<>();
ArrayList list7 = new List<>(); // DOES NOT COMPILE