Giriş
Java 9 ile geliyor.
JEP 269 ile gelen List, Set, Map arayüzlerinin of() static factory
metodu.
ÖrnekŞöyle
yaparız.
List<String> TRAIN = List.of("...","...");
Örnek - record
record Employee(int id){ }
var empList = List.of(new Employee(1),
new Employee(2),
new Employee(3));
System.out.println(empList);
ÖrnekListede null değer
olamaz.
List<Integer> list = List.of(1, 2, null); // Fails with a NullPointerException
ÖrnekListeye null eklemesi
yapılamaz.
List<Integer> list = List.of(1, 2, 3);
list.contains(null); // Throws NullPointerException
ÖrnekDöndürülen liste
değiştirilemez.
List<Integer> list = List.of(1, 2, 3);
list.set(1, 10); // Fails
Collections.unmodifiableList Karşılaştırması
Java 8 kullanıyorsak bu metodu kullanmak
gerekir.
Arrays.asList KarşılaştırmasıBu metod
Arrays.asList() metodu ile karşılaştırılabilir. Arrays.asList() eski bir metod, Java 2'den beri var.
1. Arrays.asList() array backed list döndürür. List.of() ise array backed list yerine yeni bir liste döndürür.
2. Her iki yöntemde de listeye ekleme çıkarma yapılamaz
3. Array backed list set işlemini destekler. List.of() ise desteklemez
Açıklaması
şöyle.
It takes an array or a series of elements and returns a List backed by the original array. This means any changes made to the list will directly affect the original array, and vice versa.
Dolayısıyla listeye ekleme çıkarma yapılamaz. Açıklaması
şöyle.
You can change the value of existing elements in a list but since it has a fixed size. You cannot add or remove elements from the list. Any attempt to add/remove will result in an UnsupportedOperationException.
Şöyle
yaparız. Burada List.of() metodunun
array backed list döndürmediği görülebilir.
Integer[] array = {1,2,3};
List<Integer> list = List.of(array);
array[1] = 10;
System.out.println(list); // Prints [1, 2, 3]
Şöyle yaparız. List.of() metodunun set işlemini desteklemediği ancak
array backed list'in desteklediği görülebilir.
List<Employee> empList = List.of(new Employee(1),
new Employee(2),
new Employee(3));
empList.set(0, new Employee(50));// Not Supported
System.out.println(empList);
List<Employee> empList1 = Arrays.asList(new Employee(1),
new Employee(2),
new Employee(3));
empList1.set(0, new Employee(50));// Supported
System.out.println(empList1);