ArrayList принадлежит к иерархии списков в структуре Java Collection.

Если вам понравилась эта статья, пожалуйста, поставьте мне палец вверх. Вот полное видео https://youtu.be/b3WKatSm6lA

ArrayList — это упорядоченная коллекция, которая внутренне реализована Array.

Несмотря на то, что ArrayList поддерживается массивом, который представляет собой структуру данных фиксированного размера, он имеет динамический размер, что означает, что его размер можно изменить.

Создание нового ArrayList

ArrayList<String> l = new ArrayList<>();

//adding elements to the list
l1.add("Item1"); //index 0
l1.add("Item2"); //index 1
l1.add("Item3"); //index 2
l1.add("Item4"); //index 3

//getting elements from the list by passing the index to get method
System.out.println(l1.get(0));
System.out.println(l1.get(1));
System.out.println(l1.get(2));
System.out.println(l1.get(3));

Мы также можем установить элементы по индексу.

//this will set/update element at index 1 to 21
nums.set(1, 21);

Групповое/пакетное добавление элементов в ArrayList

private static void addingElementsFromAnotherCollection(ArrayList<String> l1) {
      //creating a new collection
      ArrayList<String> l2 = new ArrayList<>();
      l2.add("Item5");
      l2.add("Item6");

      //Use addAll method to add values from collection l2 to l1 in bulk
      l1.addAll(l2);

      System.out.println(l1);
 }

Доступ к элементам с помощью Iterator и for-each

private static void usingForEach(ArrayList<String> l1) {
    System.out.println("for-each==============");
    for (String element : l1) {
        System.out.println(element);
    }
}

private static void usingIterator(ArrayList<String> l1) {
    System.out.println("Iterator===========");
    Iterator<String> it = l1.iterator();
    while(it.hasNext()) {
        System.out.println(it.next());
    }
}

Поиск элементов

String toCheck = "Item4";
//returns true if list contains Item4 otherwise returns false
System.out.println(l1.contains(toCheck)); 

//indexOf returns index of first occurrence
//lastIndexOf returns index of first occurrence from the end
System.out.println(l1.indexOf("Item6") + ", " + l1.lastIndexOf("Item6"));

Методы, связанные с размером

l.size(); //returns size of the arrayList

//returns true if List is empty
l.isEmpty();

l.clear(); //clears the list, removes all elements from the list

Удаление элементов из списка

private static void removeAndRetain(ArrayList<String> l1) {
    l1.add("Item1");
    l1.add("Item2");
    l1.add("Item3");
    l1.add("Item4");
    l1.add("Item5");
    System.out.println(l1);

    //remove Item3 from the list
    l1.remove("Item3");
    System.out.println(l1);

    //remove element at index 1
    l1.remove(1);
    System.out.println(l1);

    
    ArrayList<String> tobeDeleted = new ArrayList<>();
    tobeDeleted.add("Item4");
    tobeDeleted.add("Item5");

    //remove Item4 and Intem5 from l1 in a single pass
    l1.removeAll(tobeDeleted);
    System.out.println(l1);

    ArrayList<Integer> nums = new ArrayList<>();
    nums.add(1);
    nums.add(2);
    nums.add(3);
    nums.add(4);
    
    //internally iterates the list elements and applies passed predicate to 
    //each element.
    //All matching elements will be removed from the list
    nums.removeIf(integer -> integer % 2 == 0);

    System.out.println(nums);

    ArrayList<Integer> nums1 = new ArrayList<>();
    nums1.add(5);
    nums1.add(6);
    nums1.add(7);
    nums1.add(8);

    ArrayList<Integer> keepThese = new ArrayList<>();
    keepThese.add(6);
    keepThese.add(7);
    
    //Opposite of removeAll
    //All elements in nums1 which are not part of passed collection
    //will be removed.
    nums1.retainAll(keepThese);
    System.out.println(nums1);

}

Преобразование списка ArrayList в массив

ArrayList<Integer> nums = new ArrayList<>();
nums.add(1); //0
nums.add(2); //1
nums.add(3); //2
nums.add(4); //3

Object[] arr = nums.toArray(); //returns an object array

//An explicit cast is required to convert object[]
Integer[] arr = (Integer[]) nums.toArray();

//This doesn't need an explicit cast
//this version can infer the type from array type passed to toArray(..)
Integer[] arr = nums.toArray(new Integer[0]);

Выполнение действия над каждым элементом

//passed consumer will be applied to all elements
l1.forEach(s -> System.out.println(s.toUpperCase()));