1. ডেটা রূপান্তর
ক্লাসের Stream<T>
একটি পদ্ধতিও রয়েছে যা আপনাকে এক প্রকার থেকে অন্য টাইপের ডেটা রূপান্তর করতে দেয়। এই পদ্ধতি হল map()
।
এটি একটি স্ট্রীমও প্রদান করে, কিন্তু একটি ভিন্ন ধরনের উপাদানের সাথে। পদ্ধতিটি map()
একটি পদ্ধতি যুক্তি হিসাবে একটি ফাংশন নেয় যা একটি ডেটা টাইপকে অন্যটিতে রূপান্তর করে।
উদাহরণ:
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<String> stream2 = stream.map((x) -> String.valueOf(x));
Integer
একটি স্ট্রীম একটি String
স্রোতে রূপান্তর
পদ্ধতিতে পাস করা ফাংশন আর্গুমেন্ট map()
একটি সংখ্যা নেয় x
এবং তার স্ট্রিং উপস্থাপনা প্রদান করে। যাইহোক, আপনি এই কোডটি আরও কম্প্যাক্টলি লিখতে পারেন:
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<String> stream2 = stream.map(String::valueOf);
Integer
একটি স্ট্রীম একটি String
স্রোতে রূপান্তর
একটি সংখ্যা একটি স্ট্রিং রূপান্তর
একইভাবে, আপনি একটি স্ট্রিংকে একটি সংখ্যায় রূপান্তর করতে কোড লিখতে পারেন - এটিও জটিল নয়:
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<String> stream2 = stream.map(String::valueOf);
Stream<Integer> stream3 = stream2.map(Integer::parseInt);
String
একটি প্রবাহকে একটি Integer
স্রোতে রূপান্তর করা হচ্ছে
একটি স্ট্রিং রূপান্তর aURI
ডেটা রূপান্তর ক্রিয়াকলাপ হতে পারে সম্পদ- এবং সময় নিবিড়। ধরা যাক আমরা স্ট্রিংগুলির একটি সংগ্রহকে URI অবজেক্টে রূপান্তর করতে চাই। এটি করা খুব সহজ, কারণ ইউআরআই কনস্ট্রাক্টর একটি স্ট্রিং একটি যুক্তি হিসাবে নেয়।
ArrayList<String> list = new ArrayList<String>();
list.add("https://google.com");
list.add("https://linkedin.com");
list.add("https://yandex.com");
Stream<URI> stream = list.stream().map( URI::new );
String
একটি প্রবাহকে একটি URI
স্রোতে রূপান্তর করা হচ্ছে
আমরা একটি সংগ্রহ তৈরি করেছি এবং এটিকে 3টি ওয়েব ঠিকানা দিয়ে তৈরি করেছি। তারপর আমরা Stream<String>
সংগ্রহ থেকে একটি বস্তু পেয়েছি, এবং সেই স্ট্রিম থেকে আমরা একটি Stream<URI>
বস্তু পেয়েছি। আমরা মানচিত্র পদ্ধতিটি সেই পদ্ধতির একটি রেফারেন্স পাস করেছি যা প্রতিটি স্ট্রিংকে একটি URI তে রূপান্তর করতে ব্যবহৃত হবে।
এই পদ্ধতি (কন্সট্রাকটর) String
একটি যুক্তি হিসাবে গ্রহণ করা আবশ্যক. সবকিছু নিখুঁত বলে মনে হচ্ছে ...
2. ব্যতিক্রম
আমরা আশা করতে পারি যে উপরের কোডটি কাজ করবে, কিন্তু এটি হবে না - প্রোগ্রামটি কম্পাইল করবে না। এবং এই কারণে নয় যে আমরা কোথাও ভুল করেছি, কিন্তু জাভা এর নির্মাতারা গোলমাল করেছে বলে।
একসময়, তাদের ক্লাস কনস্ট্রাক্টরের URISyntaxException
সাথে চেক করা ব্যতিক্রম ( ) যোগ করার উজ্জ্বল ধারণা ছিল URI
! এবং এই জাতীয় ব্যতিক্রমগুলি অবশ্যই একটিতে আবৃত করা উচিত try-catch
।
সুতরাং আমাদের কোডের শেষ লাইনটি এইরকম দেখাবে:
Stream<URI> stream = list.stream().map(str ->
{
try
{
return new URI(str);
}
catch (URISyntaxException e)
{
e.printStackTrace();
return null;
}
});
আমরা কি বলতে পারি? চেক করা ব্যতিক্রম ব্যবহার করার আগে আপনার দুবার চিন্তা করা উচিত । এবং একটি কনস্ট্রাক্টরে ব্যবহার করার আগে তিনবার চিন্তা করুন।
GO TO FULL VERSION