$show=/label

Increasing or Extending an Array Length in 3 ways

SHARE:

Learn about the different ways in which a Java array can be extended or Increasing size of array.

Outline:

In this tutorial, We'll see how many ways an array can be extended in java.

The actual array values are stored in contiguous memory locations. The answer may not be promptly obvious.

Increasing or Extending an Array Length in 3 ways


Using Arrays.copyOf:

First is Arrays.copyOf method. java.util.Arrays.copyOf() method is in java.util.Arrays class. It copies the specified array, truncating or padding with false (if necessary) so the copy has the specified length.

See the below model example.

Sample code snippet:

 /**
  * Adds the given elementToAdd value at the end of the given array. This method creates internally a new array.
  * 
  * @param srcArray
  * @param elementToAdd
  * @return
  */
 public Integer[] addElementUsingArraysCopyOf(Integer[] srcArray, int elementToAdd) {
  Integer[] destArray = Arrays.copyOf(srcArray, srcArray.length + 1);
  destArray[destArray.length - 1] = elementToAdd;
  return destArray;
 }

This method takes srcArray which is Integer[] array and a int value elementToAdd. This method returns a new array which new value added to it.
Internally copies all srcArray elements into new array using copyOf method with size of srcArray.length+1. Here, array last index value added with value '0' and replacing with new value elementToAdd.

On this spot now, We should talk about few cases on below code.

 Integer[] destArray = Arrays.copyOf(srcArray, newLength);

If the newLength is greater than srcArray length then Arrays.copyOf() method will copy the extra null values into the destination array.

int[] srcArray = new int[] { 1, 2, 3, 4, 5, 6 };
int newLength = 10;
int[] destArray = Arrays.copyOf(srcArray, newLength);

Output:

input array : 1 2 3 4 5 6 
Destination array: 1 2 3 4 5 6 0 0 0 0 


Extra values filling behaviour will be changed based on the srcArray type. If it is Wrapper or custom classs array then null values will be added.
if srcArray is char then null values and if srcArray is boolean array then false will be added. Thumb rule is for extra value filling is with srcArray type default value.

In String class, concat() method uses copyof method internaly in java api. And also uses System.arraycopy method inside concat method of String.


Using ArrayList:

Second, we'll see using ArrayList. Here we do perform 3 steps.

1) covert srcArray to ArrayList
2) Add newElement to the ArrayList
3) Convert back ArrayList to destArray.

Sample code snippet:


 /**
  * Adds the given elementToAdd to Array using ArrayList internally.
  * @param srcArray
  * @param elementToAdd
  * @return
  */
 public Integer[] addElementUsingArrayList(Integer[] srcArray, int newElementToAdd) {
  Integer[] destArray = new Integer[srcArray.length + 1];
  List arrayList = new ArrayList<>(Arrays.asList(srcArray));
  arrayList.add(newElementToAdd);
  return arrayList.toArray(destArray);
 }

   
Above program is to add newElement to array by increasing array size.

Invoking addElementUsingArrayList method.

int newElementToAdd = 7;
Integer[] srcArray = new Integer[] { 1, 2, 3, 4, 5, 6 };
Integer[] destArray = addElementUsingArrayList(srcArray, newElementToAdd);


New destArray values will be as below.   
   
Output:

New destArray values: 1 2 3 4 5 6 7 

We could see now that new value added to the array.

Using System.arraycopy:

Finally, We'll take a look at System.arraycopy method which is heavily used in java api such as Collection and Arrays.

Syntax Structure:

void java.lang.System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

Sample code snippet:


 /**
  * Copies given elments into new array by adding elementToAdd using System.arraycopy method.
  * 
  * @param srcArray
  * @param elementToAdd
  * @return
  */
 public Integer[] addElementUsingSystemArrayCopy(Integer[] srcArray, int elementToAdd) {
  Integer[] destArray = new Integer[srcArray.length + 1];
  System.arraycopy(srcArray, 0, destArray, 0, srcArray.length);
  destArray[destArray.length - 1] = elementToAdd;
  return destArray;
 }

Interesting fact is that System.arraycopy method is used internally in Arrays.copyOf method and increasing the size of ArrayList when it reaches threashold.

Here we can notice that we moved the elements from the srcArray to destArray and then add the new element to the destArray. But, still the srcArray holds the original values and this is not modified.

Performance Aspect:

In above all discussed solutions, we had to create a new array using possible ways. The reason is that array holds contiguous block of memory for super-fast lookup, which is why we cannot simply resize it.

This operation impackts performance but ArrayList is well balanced in resizing the Array when it is actually needed. rellation of memory is taken care by JVM.

Conclusion:

In this tutorial, we have explored the different ways of adding elements to the end of an array. In other words, increasing or extending size of an Array.

All the example programs shown in this tutorial are on GitHub

COMMENTS

BLOGGER

About Us

Author: Venkatesh - I love to learn and share the technical stuff.
Name

accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,16,Arrays,7,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,5,Collections,22,Collector,1,Command Line,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,81,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,4,Dictionary,1,Difference,1,Download,1,Eclipse,2,Efficiently,1,Error,1,Errors,1,Exception,1,Exceptions,3,Fast,1,Files,9,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,4,Grant,1,Grep,1,HashMap,1,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,5,Iterate,2,Jackson API,3,Java,29,Java 10,1,Java 11,5,Java 12,5,Java 13,2,Java 14,2,Java 8,66,Java 8 Difference,2,Java 8 Stream Conversions,2,java 8 Stream Examples,3,Java 9,1,Java Conversions,11,Java Design Patterns,1,Java Files,1,Java Program,2,Java Programs,65,java.lang,5,java.util. function,1,jQuery,1,Kotlin,10,Kotlin Conversions,3,Kotlin Programs,6,Lambda,1,lang,29,Leap Year,1,live updates,1,Logging,1,Mac OS,2,Math,1,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,1,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,21,String,58,String Programs,9,String Revese,1,Swing,1,System,1,Tags,1,Threads,10,Tomcat,1,Tomcat 8,1,Troubleshoot,16,Unix,2,Updates,3,util,5,While Loop,1,
ltr
item
JavaProgramTo.com: Increasing or Extending an Array Length in 3 ways
Increasing or Extending an Array Length in 3 ways
Learn about the different ways in which a Java array can be extended or Increasing size of array.
https://2.bp.blogspot.com/-GPyxavwZ0p4/XMrJjcGlj1I/AAAAAAAABc4/EDY7etxTgI8g03DbzuUZZXoYBtg7bSewQCLcBGAs/s400/Increasing%2Bor%2BExtending%2Ban%2BArray%2BLength%2Bin%2B3%2Bways.PNG
https://2.bp.blogspot.com/-GPyxavwZ0p4/XMrJjcGlj1I/AAAAAAAABc4/EDY7etxTgI8g03DbzuUZZXoYBtg7bSewQCLcBGAs/s72-c/Increasing%2Bor%2BExtending%2Ban%2BArray%2BLength%2Bin%2B3%2Bways.PNG
JavaProgramTo.com
https://www.javaprogramto.com/2019/05/java-array-add-element-at-the-end.html
https://www.javaprogramto.com/
https://www.javaprogramto.com/
https://www.javaprogramto.com/2019/05/java-array-add-element-at-the-end.html
true
3124782013468838591
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content