Sobes.tech
Middle

Put və compute metodları arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

put(key, value) sadə şəkildə value-nu key ilə əlaqələndirir, mövcud dəyəri əvəz edir əgər açar artıq mövcuddursa.

compute(key, remappingFunction) təmin olunan remappingFunction funksiyasını istifadə edərək key üçün yeni dəyər hesablayır. Funksiya cari açar və onun cari dəyərini (və ya null əgər açar mövcud deyilsə) qəbul edir və açar ilə əlaqələndiriləcək yeni dəyəri qaytarır. Əgər funksiya null qaytarırsa, qeyd silinir.

Əsas fərqlər:

  • Əksik açarların işlənməsi: put yeni dəyər əlavə edir. compute əvvəlki dəyərdən (hətta null olsa belə) istifadə edə bilər və yeni dəyər hesablayar.
  • Əvvəlki dəyərə bağlılıq: put dəyəri əvvəlki dəyərdən asılı olmayaraq təyin edir. compute açar üçün əvvəlki dəyəri açıq şəkildə istifadə edir.
  • Qeydiyyatların silinməsi: put(key, null) qeydiyyatı silir. compute əgər hesablamanın funksiyası null qaytarırsa, qeydiyyatı silir.

İstifadə nümunəsi:

// put istifadə
Map<String, Integer> countsPut = new HashMap<>();
countsPut.put("apple", 1);
countsPut.put("apple", 2); // 1-i 2 ilə əvəz edir

// sayğacı artırmaq üçün compute istifadə
Map<String, Integer> countsCompute = new HashMap<>();
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana 1 olacaq
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana 2 olacaq
countsCompute.compute("cherry", (key, value) -> null); // əgər varsa, cherry silinir