Sunday, February 12, 2023

How to convert an ArrayList to Array in Java? Example

Hello guys, if you are wondering how to convert an ArrayList of objects to an array of Object in Java then you have come at the right place. In this article, I will show you a couple of ways to convert an ArrayList to Array in Java. For example, you can start with creating a new array and then copying elements from ArrayList to array, or you can also use use Stream to go through all elements of ArrayList and then collect result in an array. In this example, we will use Arrays.copyOf() method to convert a given ArrayList to array in Java. This method can be used to convert any ArrayList like ArrayList of Integer, String or any custom object to Array in Java. 

Converting String ArrayList into String array is very common programming task in Java. you often need to convert Array to Array List in Java  and vice-versa. In this Java program, we will How to convert String ArrayList to String array

This is also a common programming exercise which is asked too many Java programmers in various Java related courses. It’s also worth noting that ArrayList in Java is internally backed by array and Array in Java are objects much like String which is also an Object in Java. 

In this Java program, we first create an ArrayList which stores name of months as String e.g. Jan, Feb, and Mar. Later we use ArrayList  toArray() method to convert ArrayList into an array.

How to convert an ArrayList to Array in Java? ArrayList of String Example





How to convert String ArrayList to Array in Java? Example

Here is full code example of Java test program which convert String ArrayList to String Array in Java. In this Java program we first create an ArrayList which stores name of month in String format and then we convert that into an String array.




Java Program to convert an ArrayList of String to an Array

package arrayListEx;

import java.util.ArrayList;
import java.util.Arrays;

public class ArrayListtoArray {
     
        public static void main(String args[]){
             
                //ArrayList containing string objects
                ArrayList<String> aListMonth
                 = new ArrayList<String>();
                aListMonth.add("Jan");
                aListMonth.add("Feb");
                aListMonth.add("mar");
             
                /*
                 * To convert ArrayList containing String elements to String array, use
                 * Object[] toArray() method of ArrayList class.
                 */

             
                //First Step: convert ArrayList to an Object array.
                Object[] objMnt = aListMonth.toArray();
             
                //Second Step: convert Object array to String array
    String[] strMnts = Arrays.copyOf(objMnt, objMnt.length, String[].class);
             
                System.out.println("ArrayList converted to String array");
             
                //print elements of String array
                for(int i=0; i < strMnts.length; i++){
                        System.out.println(strMnts[i]);
                }
        }
}



How to convert String ArrayList to String Array in JavaThat’s all on how to convert String ArrayList to String Array in Java. This is general way of convert ArrayList to Array in Java and by using this example you can even convert an Integer ArrayList or Double ArrayList to corresponding Array in Java. 

Just remember that ArrayList is not synchronized and this program can not be used in multi-threaded environment in Java. If you want to use synchronized collection, consider using Vector over ArrayList. By the way from Java 8 onwards, you can also use Stream class to convert ArrayList to array in Java as shown in this example here



List of Java homework exercise program from java67 blog


5 comments:

  1. Thanks for article.
    One question:

    if each element into objMnt is really a Object reference to String instance ( and I can make a downcast such String e = (String)objMnt[0] )

    Why I cannot make a downcast

    String[] a = (String[]) objMnt

    ?

    Arrays are covariant

    Regards

    ReplyDelete
  2. Your code is not HTML safe use pastebin or stuff like that !

    ReplyDelete
  3. @jmzc: The object array objMnt is of type Object[] and contains String references, that's why you can downcast a reference in the array. You can store String references in an Object[] because the class String is derived from the class Object and therefore you can substitute objects of type String for objects with type Object.

    The Object[] itself cannot be downcasted to String[] because String[] is a derived class of Object[]. This means even tough the Object[] object contains references to Strings, the Object[] object itself is _NOT_ a String[] object.

    But back to the problem: You could also convert the ArrayList of strings in an easier way:

    String[] strMnts = aListMonth.toArray( new String[aListMonth.size()] );

    This method exists (AFAIK) because of the exact reason mentioned above. By passing in the pre-allocated array of type String[], the actual return type of toArray is of type String[] and not of type Object[].

    ReplyDelete
  4. Or easier, the code I made:

    import java.util.ArrayList;

    public class month {

    public static void main(String args[]){

    //ArrayList containing string objects
    ArrayList aListMonth = new ArrayList();
    aListMonth.add("Jan");
    aListMonth.add("Feb");
    aListMonth.add("Mar");
    aListMonth.add("Apr");
    aListMonth.add("Jun");

    String strMnts[]=new String[aListMonth.size()];
    strMnts=aListMonth.toArray(strMnts);
    for(int i=0;i<strMnts.length;i++)
    System.out.print(strMnts[i]+" ");

    }
    }

    ReplyDelete
  5. Much easier still: String[] y = x.toArray(new String[0]); (see http://docs.oracle.com/javase/7/docs/api/java/util/List.html#toArray%28T[]%29)

    ReplyDelete

Feel free to comment, ask questions if you have any doubt.