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:
putyeni dəyər əlavə edir.computeəvvəlki dəyərdən (həttanullolsa belə) istifadə edə bilər və yeni dəyər hesablayar. - Əvvəlki dəyərə bağlılıq:
putdəyəri əvvəlki dəyərdən asılı olmayaraq təyin edir.computeaç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ınullqaytarı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