The default size for a Java ArrayList class is 10. When an ArrayList reaches its capacity maximum (10), it increases its capacity by approximately half. That is why an ArrayList takes more time if it is not initialized with the proper size. When you add objects to an ArrayList and it reaches its maximum capacity, it creates another, bigger array (with a capacity of approximately 15) and copies the previous and new objects into the new array.
Obviously, creating a new array and copying objects is costly to performance. So, the best approach is to initialize the ArrayList with a proper size. To do this, you use constructors or ensureCapacity(int capacity), which results in better performance.
For example, use this code if you expect your ArrayList to store around 3000 objects:
List<String> str = new ArrayList<String>(3000)
If you have a hot tip and we publish it, we'll pay you. However, due to accounting overhead we no longer pay $10 for a single tip submission. You must accumulate 10 acceptable tips to receive payment. Be sure to include a clear explanation of what the technique does and why it's useful. If it includes code, limit it to 20 lines if possible.
Submit your tip here.