Bu metod Java 8 ile geldi. İlklendirme veya yeni değer hesaplama içindir.
compute() ve merge() ile Farkı
compute() metodu da aynı merge() gibidir. Eğer ilk değeri yoksa merge() ikinci parametre olarak belirtilen değeri kullanır. compute() ise ilk değer yoksa ikinci parametre olarak verilen BiFunction sonucunu kullanır.
Örnek
Şöyle yaparız. Anahtar yoksa, key,value=1 olarak ekler. Anahtar mevcutsa verilen BiFunction çalıştırılır.
private Integer somefunction() {
return cache.merge(key, 1, Integer::sum);
}
Örnek
Şöyle yaparız. Çıktı olarak "GERB: 116" alırız
Map<String, Integer> voting = new ConcurrentHashMap<>();
for (int i = 0; i < 16; i++)
new Thread(() -> {
voting.merge("GERB", 1, Integer::sum);
}).start();
for (int i = 0; i < 100; i++)
voting.merge("GERB", 1, Integer::sum);
Thread.sleep(5000); // Waits for the threads to finish
for (String s : voting.keySet())
System.out.println(s + ": " + voting.get(s));
Hiç yorum yok:
Yorum Gönder