Sobes.tech
Middle

put әдісі мен compute әдісі арасындағы айырмашылық неде?

sobes.tech AI

AI-дан жауап

put(key, value) жай ғана value-ны key-мен ассоциациялайды, егер кілт бұрыннан бар болса, оның мәнін ауыстырады.

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 жойылады