computeIfAbsent metodu - Null Dönemez
Java 8 ile geldi. Bizi key değeri var/yok kontrolü yaptığımız if kontrolünden kurtarır. Aranan değer mevcut değilse Map'e yeni bir nesne ekler ve onu döner. value olarak null kabul etmez. Kod olarak şuna benzer.
Şöyle yaparız.
Daha kısa kodlama için şöyle yaparız.
Şöyle yaparız.
Java 8 ile geldi. Örnek ver
get metodu
Bu metod generic değil.
Örnek
Elimizde şöyle bir kod olsun.
Java 8 ile geldi. Açıklaması şöyle. Aranan değer mevcut değilse Map'i değiştirmeden bir nesne elde ederiz. Bu metod yerine çoğunlukla computeIfAbsent() tercih ediliyor.
Şöyle yaparız.
Elimizde şöyle bir kod olsun. Bu kodda getOrDefault() yerine computeIfAbset() çağrısı yapmak daha iyi.
Map.ofEntries metodu yazısına taşıdım
Java 8 ile geldi. Bizi key değeri var/yok kontrolü yaptığımız if kontrolünden kurtarır. Aranan değer mevcut değilse Map'e yeni bir nesne ekler ve onu döner. value olarak null kabul etmez. Kod olarak şuna benzer.
if (map.get("key") == null) {
map.put("key",new ValueClass());
}
Örnek - ArrayListŞöyle yaparız.
List<Bar> bars = itemsByFoo.computeIfAbsent(key, x -> new ArrayList<>());
bars.add(someNewBar);
Örnek - ArrayListDaha kısa kodlama için şöyle yaparız.
hmap.computeIfAbsent(key, k -> new ArrayList<>())
.add(s);
Örnek - HashMapŞöyle yaparız.
allClients.computeIfAbsent(id, key -> new HashMap<>())
.put(date, invoice);
forEach metoduJava 8 ile geldi. Örnek ver
get metodu
Bu metod generic değil.
Örnek
Elimizde şöyle bir kod olsun.
Map<String, Integer> myHashMap = new HashMap<String, Integer>();
Key tipimiz String olmasına rağmen şöyle yapabiliriz.myHashMap.get(1L);
getOrDefault metoduJava 8 ile geldi. Açıklaması şöyle. Aranan değer mevcut değilse Map'i değiştirmeden bir nesne elde ederiz. Bu metod yerine çoğunlukla computeIfAbsent() tercih ediliyor.
getOrDefault is suitable if you want to use a stand-in for an absent value without modifying the map.Örnek
Şöyle yaparız.
Map<Foo, List<Bar>> itemsByFoo = ...
List<Bar> bars = itemsByFoo.getOrDefault(key, new ArrayList<>());
ÖrnekElimizde şöyle bir kod olsun. Bu kodda getOrDefault() yerine computeIfAbset() çağrısı yapmak daha iyi.
List<String> list = hmap.getOrDefault(key,new ArrayList<String>());
list.add(s);
hmap.put(key,list);
ofEntries metodu - Parametre Olarak Map.entry AlırMap.ofEntries metodu yazısına taşıdım
of metodu -
Map.of metodu yazısına taşıdım
putIfAbsent metodu - Eski Value Değerini Verir, Yani Null Dönebilir
Java 8 ile geldi. Aranan değer mevcut değilse Map'e yeni bir nesne ekler ve null döner. Eğer mevcutsa value nesnesini döner. Value olarak null kabul eder. Default gerçekleştirim şöyle. Metodun içi direkt Java standardında tanımlı
default V putIfAbsent(K key, V value) {
V v = get(key);
if (v == null) {
v = put(key, value);
}
return v;
}
Açıklaması şöyle.Şöyle okuması daha kolay.The default implementation makes no guarantees about synchronization or atomicity properties of this method. Any implementation providing atomicity guarantees must override this method and document its concurrency properties.
ValueClass value = new ValueClass();
if (map.get("key") == null) {
map.put("key",value);
}
replaceAll metoduJava 8 ile geldi. Value nesnesinin değiştirilmesine izin verir.
Örnek
Şöyle yaparız. Value olarak kullanılan Set'i HashSet ile değiştirir.
Map<Integer,Set<Object>> map = new HashMap<>();
map.put(5, Collections.emptySet());
map.put(10, Collections.singleton("foo"));
map.replaceAll((key, set) -> new HashSet<>(set));
ÖrnekŞöyle yaparız.
Map<String, Double> adjustedMap = new HashMap<>(someMap);
adjustedMap.replaceAll ((k,v) -> v != null ? 2*v : null);
values metodu
Örnek ver
Örnek ver
Hiç yorum yok:
Yorum Gönder