Sobes.tech
Junior — Middle

Java Stream API-деги map жана flatMap ыкмаларынын айырмасы эмнеде жана алардын колдонуу өзгөчөлүктөрү кандай?

sobes.tech AI

AIден жооп

Java Stream API-деги map жана flatMap ыкмалары агымдын элементтерин өзгөртүү үчүн колдонулат, бирок ар башкача иштешет:

  • map функцияны кабыл алат, ал ар бир элементти башка элементке өзгөртөт. Натыйжада, ошол эле сандыктагы элементтер менен агым алынады, бирок башка түрдө же көрүнүштө.

  • flatMap функцияны кабыл алат, ал ар бир элементти агым (Stream) кылып өзгөртөт жана андан соң бул агымдарды ("жука") бир жалпы агымга бириктирет. Бул бир эле элементтен бир нече элемент алуу керек болгондо пайдалуу.

Мисал:

List<String> words = Arrays.asList("hello", "world");

// map: ар бир сөздү анын узундугуна өзгөртүү
List<Integer> lengths = words.stream()
    .map(String::length)
    .collect(Collectors.toList()); // [5, 5]

// flatMap: ар бир сөздү тамгаларга бөлүп, бардык тамгаларды бир агымга бириктирүү
List<String> letters = words.stream()
    .flatMap(word -> Arrays.stream(word.split("")))
    .collect(Collectors.toList()); // [h, e, l, l, o, w, o, r, l, d]

Колдонуу:

  • map жөнөкөй элемент-элемент түрдүү өзгөртүүлөр үчүн ылайыктуу.
  • flatMap бир эле элементтен көп элемент алуу керек болгондо жана ички түзүмдөрдү "жука" кылуу зарыл болгондо колдонулат.