Codementor Events

The Arrays Class In Java

Published Dec 08, 2024
The Arrays Class In Java

1. Introduction

Arrays is a utility class from the Java Collections API. The class contains various methods for array manipulation. In this tutorial, you will learn some of these methods.

2. Convert an array to a List

One of the most used scenarios is turning an array into a List. This is because the List interface provides many useful methods as compared to the simple array.

        Integer[] anIntArray = {1,2,3,4,5};
        List<Integer> listOfIntegers = Arrays.asList(anIntArray);

Note that for this to work, the items in the array must be of type object. If you are working with primitive types, you can use the associated wrapper classes.
The following code will not compile:

        int[] anIntArray = {1,2,3,4,5};
        List<Integer> listOfIntegers = Arrays.asList(anIntArray);//Does not compile

Beware of the following important points:

  • Fixed-size: The List returned by this method is backed by the input array. This means that you can't add any new element to the list. Any attempt to add or remove an element will throw an UnsupportedOperationException.
  • Mutability: The list is backed by the input array. Any change in the list will reflect in the array, and vice-versa.
        Integer[] anIntArray = {1,2,3,4,5};
        List<Integer> listOfIntegers = Arrays.asList(anIntArray);
        //listOfIntegers.add(6);//UnsupportedOperationException
        listOfIntegers.replaceAll(i -> 2*i);
        System.out.println(listOfIntegers);//[2, 4, 6, 8, 10]
        System.out.println(anIntArray[4]);//10
        anIntArray[4] = 20;
        System.out.println(listOfIntegers.get(4));//20

3. Display an Array

As we saw in this tutorial, if you try to print an array to the console using System.out.println(myArray), Java will print a String corresponding to the memory address of your array. Hopefully, the Arrays class has a toString() method which provides a convenient way to display the content of an array.

        int[] anIntArray = {1,2,3,4,5};
        System.out.println(Arrays.toString(anIntArray));

4. Copy from Source to Destination

Another use case is copying the value of an array to another array. Like many other methods in the Arrays class, the copyOf() method is overloaded. This allows you to call it with any array type. The method accepts the original array as an input, and an integer denoting the size of the new array. If the integer is less than the original array size, the array is truncated. If on the contrary, it is greater than the original array size, the new array is padded with 0s.

        int[] originalInArray = {1,2,3,4,5};
        int[] copy1 = Arrays.copyOf(originalInArray,5);
        System.out.println(Arrays.toString(copy1));// [1, 2, 3, 4, 5]
        int[] copy2 = Arrays.copyOf(originalInArray,3);
        System.out.println(Arrays.toString(copy2));// [1, 2, 3]
        int[] copy3 = Arrays.copyOf(originalInArray,10);
        System.out.println(Arrays.toString(copy3));// [1, 2, 3, 4, 5, 0, 0, 0, 0, 0]

5. Sort an Array

The Arrays class provides you with many methods to sort an array. The only condition is that the items in the array must either be primitive types or implement the Comparable interface.

5.1. Sort an Array of Primitives

        int[] anIntArray = {4,3,1,5,2};
        Arrays.sort(anIntArray);
        System.out.println(Arrays.toString(anIntArray));//[1, 2, 3, 4, 5]

5.1. Sort an Array of Objects

Below is an example with an object type Person.

        Person p1 = new Person("John", "Doe");
        Person p2 = new Person("Alice", "Smith");
        Person p3 = new Person("John", "Smith");
        Person[] persons = {p1,p2,p3};
        Arrays.sort(persons);
        System.out.println(Arrays.toString(persons));

Output:

[Person[firstName=Alice, lastName=Smith], Person[firstName=John, lastName=Doe], Person[firstName=John, lastName=Smith]]

Note that for this to work, the Person class implements the Comparable interface.

record Person(String firstName, String lastName) implements Comparable<Person>{
    @Override
    public int compareTo(Person other) {
        // Compare by firstName first
        int firstNameComparison = this.firstName.compareTo(other.firstName);
        if (firstNameComparison != 0) {
            return firstNameComparison;
        }
        // If firstName is the same, compare by lastName
        return this.lastName.compareTo(other.lastName);
    }
}

6. Miscellaneous methods

The Arrays utility class contains other useful methods among which: equals, binarySearch, compare, etc.

        int[] anIntArray1 = {1,2,3,4,5};
        int[] anIntArray2 = {4,3,1,5,2};
        int[] anIntArray3 = {1,2,3,4,5};
        System.out.println(Arrays.equals(anIntArray1,anIntArray2));//false
        System.out.println(Arrays.equals(anIntArray1,anIntArray3));//true
        int pos = Arrays.binarySearch(anIntArray1,5);
        System.out.println(pos);//4

Take away: The Arrays class provides very useful utility methods for array manipulation.

7. Conclusion

In this article, you learned some of the most used methods of the Arrays utility class.
You can find the complete code of this article here in GitHub.

_Originally published at https://nkamphoa.com

Discover and read more posts from Noel KAMPHOA
get started