Dari materi sebelumnya temen-temen ada yang bingung? tentang di materi element collection kok beda cara penulisannya dengan array biasa yaitu seperti berikut:

1
2
3
4
5
6
7
8
9
10
11
package tdi.training.java.core.data;

public class TypeOfArray {

public static void main(String[] args){
Integer[] intValues = new Integer[10];
Double[] doubleValues = new Double[5];
String[] stringValues = new String[15];
}

}

Tetepi ketika menggunakan java.util.List ada penggunakan <> atau yang biasanya dinamakan dengan diamonds contohnya seperti berikut:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package tdi.training.java.core.data;

import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;

public class TypeOfListOrMap{

public static void main(String[] args){
List<String> listOfString = new ArrayList<>();
List<Integer> listOfInteger = new ArrayList<>();

Map<String, Object> mapValues = new HashMap<>();
}
}

Nah pasti jadi pertanya kenapa harus menggunakan <> (generics type). Padahal dengan koding seperti ini saja sudah bisa jalan

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package tdi.training.java.core.data;

import java.util.List;
import java.util.ArrayList;

public class NoGenericsTypeInList {

public static void main(String[] args){
List listValue = new ArrayList();

listValue.add("Value");

// will be need converted because the type of list is object
String singleValue = (String) listValue.get(0);
}
}

Nah coba perhatikan lagi di perintah untuk mengabil index 0, nah disitu kita memberikan nilai ke valiable singleValue dengan tipe java.lang.String kita harus melakukan conversi tipe data, karena variable listValue tidak memiliki tipe data yang pasti jadi secara default nilainya bertipe java.lang.Object sedangkan ketika menggunakan generic type kita tidak perlu melakukan conversi tipe data contohnya seperti berikut:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package tdi.training.java.core.data;

import java.util.List;
import java.util.ArrayList;

public class GenericsTypeInList {

public static void main(String[] args){
List<String> listValue = new ArrayList();

listValue.add("Value");

// no need convert, karena udah menggunakan tipe data String
String singleValue = listValue.get(0);
}
}