Java ArrayList for Beginners
Tags: beginners, tutorial, java, codenewbie
Published: 2023-04-08 04:34:27


ArrayList belongs to the List hierarchy in Java Collection framework.
>  If you like this article, please give me a thumbs up. Here’s the complete video [https://youtu.be/b3WKatSm6lA](https://youtu.be/b3WKatSm6lA)
>  ArrayList is an ordered collection which is internally implemented by Array.

Although backed by array which is a fixed-size data structure, ArrayList is dynamically sized meaning it can be resized.

**Creating a new ArrayList**

    ArrayList<String> myList = new ArrayList<>();
    
    //adding elements to the list
    myList.add("Item1"); //index 0
    myList.add("Item2"); //index 1
    myList.add("Item3"); //index 2
    myList.add("Item4"); //index 3
    
    //getting elements from the list by passing the index to get method
    System.out.println(myList.get(0));
    System.out.println(myList.get(1));
    System.out.println(myList.get(2));
    System.out.println(myList.get(3));

We can also set elements by index.

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

**Adding elements to ArrayList in Bulk/Batch**

    private static void addingElementsFromAnotherCollection(ArrayList<String> myList) {
          //creating a new collection
          ArrayList<String> fromList = new ArrayList<>();
          fromList.add("Item5");
          fromList.add("Item6");
    
          //Use addAll method to add values from collection fromList to myList in bulk
          myList.addAll(l2);
    
          System.out.println(myList);
     }

**Accessing elements using Iterator and for-each**

    private static void usingForEach(ArrayList<String> myList) {
        System.out.println("for-each==============");
        for (String element : myList) {
            System.out.println(element);
        }
    }
    
    private static void usingIterator(ArrayList<String> myList) {
        System.out.println("Iterator===========");
        Iterator<String> it = myList.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }

**Finding elements**

    String toCheck = "Item4";
    //returns true if list contains Item4 otherwise returns false
    System.out.println(myList.contains(toCheck)); 
    
    //indexOf returns index of first occurrence
    //lastIndexOf returns index of first occurrence from the end
    System.out.println(myList.indexOf("Item6") + ", " + myList.lastIndexOf("Item6"));

**Size related methods**

    myList.size(); //returns size of the arrayList
    
    //returns true if List is empty
    myList.isEmpty();
    
    myList.clear(); //clears the list, removes all elements from the list

**Removing elements from the List**

    private static void removeAndRetain(ArrayList<String> myList) {
        myList.add("Item1");
        myList.add("Item2");
        myList.add("Item3");
        myList.add("Item4");
        myList.add("Item5");
        System.out.println(myList);
    
        //remove Item3 from the list
        myList.remove("Item3");
        System.out.println(myList);
    
        //remove element at index 1
        myList.remove(1);
        System.out.println(myList);
    
        
        ArrayList<String> tobeDeleted = new ArrayList<>();
        tobeDeleted.add("Item4");
        tobeDeleted.add("Item5");
    
        //remove Item4 and Intem5 from myList in a single pass
        myList.removeAll(tobeDeleted);
        System.out.println(myList);
    
        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);
    
    }

**Converting an ArrayList to Array**

    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]);

**Performing an action on each element**

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