Java Stream API (Part III)

ვაგრძელებთ წინა პოსტებში (Part I , Part II) განხილულ თემატიკას Java Stream API -სთან დაკავშირებით. ერთ-ერთი თემა, რომელსაც ამ პოსტში განვიხილავთ არის Mapping-ი. მოვიყვანოთ ასეთი მაგათი. ვთქვათ გვაქვს Person კლასის რამდენიმე ობიექტი და მათგან თითოეული შეიცავს ინფორმაციას სახელსა და გვარზე, მისამართზე და ტელეფონზე. ვთქვათ გვინდა ჩვენ ეს პიროვნებები, მაგრამ არ გვჭირდება სამივე მონაცემი, ზოგადობის შეუზღუდავად ვიგულისხმოთ, რომ სახელი და გვარი საკმარისი იქნება. ან განვიხილოთ მეორე მაგალითი. ვთქვათ გვაქვს რიცხვების მასივი და გვინდა ამ რიცხვების კვადრატების შენახვა Stream-ში. ამისთვის გადასაჭრელად შეიძლება გაგიჩნდეთ იდეა, რომ ავიღოთ იმავე ზომის მასივი და შესაბამის ინდექსებში შევინახოთ შესაბამისი ელემენტების კვადრატები, ხოლო შემდეგ ამ მასივიდან ავიღოთ Stream-ი, თუმცა Stream API-ს map ფუნქცია დამხმარე მასივის გარეშეც დაგვეხმარება ამის გაკეთებაში.

<R> Stream<R> map(Function<? super T, ? extends R> mapFunc)

R არის ელემენტების ტიპი ახალ Stream-ში, T არის ელემენტების ტიპი გამოძახებულ Stream-ში. მოდით ვნახოთ მაგალითი მეტი თვალსაჩინოებისთვის.

SA1

როგორც ხედავთ integers List-იდან მივიღეთ Stream-ი და შემდეგ მასზე გამოვიძახეთ map ფუნქცია, რომელსაც პარამეტრად გადავეცით Lambda Expression-ი, რომელსაც თითოეული ელემენტი აჰყავს კვადრატში.

ახლა ვნახოთ მაგალითი Person-ებზე.

ეს არის სრული Person კლასი. private ველებზე წვდომის Getter/Setter მეთოდები არ გამოვაჩინე (მერე დავამატე), თქვენ იგულისხმეთ რომ აქვს, ან აქციეთ public-ად

sa2

ეს კი ახალი კლასი, რომელშიც მხოლოდ სახელი და გვარია. private ველებზე წვდომის Getter/Setter მეთოდები არ გამოვაჩინე (მერე დავამატე), თქვენ იგულისხმეთ რომ აქვს, ან აქციეთ public-ად

SA3

sa4

როგორც მაგალითში ჩანს, თავიდან გვქონდა 4 ელემენტიანი Person-ების List-ი და შემდეგ map ფუნქციის მეშვეობით ის ჩავწერეთ SimplePerson-ების Stream-ში, სადაც მხოლოდ სახელი და გვარი გამოვიყენეთ.

 

One thought on “Java Stream API (Part III)

Leave a Reply / უპასუხე

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / შეცვლა )

Twitter picture

You are commenting using your Twitter account. Log Out / შეცვლა )

Facebook photo

You are commenting using your Facebook account. Log Out / შეცვლა )

Google+ photo

You are commenting using your Google+ account. Log Out / შეცვლა )

Connecting to %s