Sobes.tech
Middle

Ի՞նչ է տարբերությունը put և compute մեթոդների միջև։

sobes.tech AI

Պատասխան AI-ից

put(key, value) պարզապես կապում է valuekey-ի հետ, փոխարինելով գոյություն ունեցող արժեքը, եթե բանալիքը արդեն առկա է:

compute(key, remappingFunction) հաշվարկում է նոր արժեք key-ի համար օգտագործելով տրամադրված remappingFunction-ը: Ֆունկցիան ընդունում է ընթացիկ բանալին և նրա ընթացիկ արժեքը (կամ null, եթե բանալին չկա) և վերադարձնում է նոր արժեք, որը կկապվի բանալու հետ: Եթե ֆունկցիան վերադարձնի null, գրանցումը հեռացվում է:

Հիմնական տարբերությունները՝

  • Հակառակ դեպքում բացակա բանալիների հետ աշխատելը: put ավելացնում է նոր արժեք: compute կարող է օգտագործել նախորդ արժեքը (նույնիսկ null) նոր արժեք հաշվարկելու համար:
  • Նախորդ արժեքից կախվածություն: put սահմանում է արժեքը անկախ նախորդից: compute հստակ օգտագործում է նախորդ արժեքը հաշվարկային ֆունկցիայում:
  • Գրանցումների հեռացում: put(key, null) հեռացնում է գրանցումը: compute հեռացնում է գրանցումը, եթե հաշվարկային ֆունկցիան վերադարձնում է null:

Օգտագործման օրինակ՝

// `put`-ի օգտագործում
Map<String, Integer> countsPut = new HashMap<>();
countsPut.put("apple", 1);
countsPut.put("apple", 2); // փոխարինում 1-ին 2-ով

// հաշվողչի ավելացման համար compute օգտագործելով
Map<String, Integer> countsCompute = new HashMap<>();
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana կլինի 1
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana կլինի 2
countsCompute.compute("cherry", (key, value) -> null); // հեռացնում է cherry-ը, եթե գոյություն ուներ