Di java 8, kapasitas default ArrayList adalah 0 hingga kami menambahkan setidaknya satu objek ke objek ArrayList (Anda dapat menyebutnya inisialisasi malas).
Sekarang pertanyaannya adalah mengapa perubahan ini dilakukan di JAVA 8?
Jawabannya adalah untuk menghemat konsumsi memori. Jutaan objek daftar larik dibuat dalam aplikasi java waktu nyata. Ukuran default 10 objek berarti kita mengalokasikan 10 pointer (40 atau 80 byte) untuk array yang mendasari saat pembuatan dan mengisinya dengan null. Array kosong (diisi dengan nulls) menempati banyak memori.
Inisialisasi malas menunda konsumsi memori ini sampai Anda benar-benar akan menggunakan daftar array.
Silakan lihat kode di bawah ini untuk bantuan.
ArrayList al = new ArrayList(); //Size: 0, Capacity: 0
ArrayList al = new ArrayList(5); //Size: 0, Capacity: 5
ArrayList al = new ArrayList(new ArrayList(5)); //Size: 0, Capacity: 0
al.add( "shailesh" ); //Size: 1, Capacity: 10
public static void main( String[] args )
throws Exception
{
ArrayList al = new ArrayList();
getCapacity( al );
al.add( "shailesh" );
getCapacity( al );
}
static void getCapacity( ArrayList<?> l )
throws Exception
{
Field dataField = ArrayList.class.getDeclaredField( "elementData" );
dataField.setAccessible( true );
System.out.format( "Size: %2d, Capacity: %2d%n", l.size(), ( (Object[]) dataField.get( l ) ).length );
}
Response: -
Size: 0, Capacity: 0
Size: 1, Capacity: 10
Artikel Kapasitas default ArrayList di Java 8 menjelaskannya secara detail.