জাভা 8: অলস ক্রিয়াকলাপগুলির জন্য এপিআই-এ স্ট্রিমগুলি প্রায় উত্তম অভ্যাস?


12

প্রি জাভা 8 লাম্বদা-ভারী লাইব্রেরিতে পেয়ারা যেমন, আউটপুটগুলি সাধারণ জাভা সংগ্রহ ফ্রেমওয়ার্ক ইন্টারফেস ব্যবহার করে তাই লাইব্রেরি পদ্ধতিতে (যেমন অলস filter()এবং transform()) এটি ব্যবহার করে তবে কিছু অলস গণনার জোর দেওয়া সহজ ।

যাইহোক, জাভা 8 স্ট্রিমগুলিতে, একটি Collection/ Mapইজ টার্মিনাল (যেমন উত্সাহী) পাওয়ার কল এবং এটি ফলাফল রাখার জন্য নতুন ডেটা স্ট্রাকচার বরাদ্দ করবে।

মাঝখানে একাধিক পর্যায় এবং কৌশল প্যাটার্ন সহ জটিল গণনাগুলির জন্য, এটি মধ্যবর্তী ফলাফলের কারণে প্রচুর অপ্রয়োজনীয় বরাদ্দ দেয়।

সুতরাং, মানুষের মনে এটি অভ্যন্তরীণ API গুলি (অর্থাত কৌশল প্যাটার্ন কৌশল) নিতে প্রয়োজন এবং রিটার্ন জন্য একটি ভাল অনুশীলন না Streams অথবা আমি শুধু ফলব্যাক অলস কিন্তু মসৃণ নয় (শ্লেষ আমি উদ্দেশ্যে) উচিত পেয়ারা API গুলি?

সম্পাদনা:

আমার প্রধান উদ্বেগটি Streamহ'ল এটি একবারে গ্রাস করা এবং Supplier<Stream<X>>চেহারার মতো কিছু পাস করা অত্যন্ত জটিল umbers এটি আপনাকে কেবল একটি পাস করার জন্য Collectionএবং তারপরে stream()এটি পুনরায় পুনরায় চাপ দেওয়ার জন্য চাপ দেয় (এবং সেই সময়ে উত্সাহী মূল্যায়নের জন্য মূল্য প্রদান করে)।


কী, পেয়ারা এবং বন্ধুরা দেশীয় স্ট্রিমের সুবিধা নিতে আপডেট করা হচ্ছে না?
কিলিয়ান ফুট

1
ইন্টারফেস থাকা যা স্ট্রিম গ্রহণ করে এবং ফেরত দেয় স্ট্যান্ডার্ড স্ট্রিম কার্যকারিতা সহ আন্তঃআযোগিতার উন্নতি করে। এটি আপনাকে আপনার ইন্টারফেসে কলগুলি একটি স্ট্রিম পাইপলাইনে সংহত করার অনুমতি দেয়।
ফিলিপ

@ কিলিয়ানফথ প্রায় এক বছর ধরে কোনও পেয়ারা প্রকাশ হয়নি এবং স্ট্রিমের সাথে পেয়ারায়ের ল্যাম্বডা জিনিস প্রতিস্থাপন সম্পর্কে অনেক জনপ্রিয় নিবন্ধ রয়েছে; তবে তাদের মধ্যে কেউই এই সত্যটির দিকে নজর দেয় না যে পেয়ারা সংগ্রহের কাজগুলি আগ্রহী বা অলস হতে পারে।
বিলক.সিএন

উত্তর:


3

জাভা 8 অলসতা পেয়ারাতে ইটারেবলসগুলির জন্য আগের মতোই কাজ করে: আপনি যখন আইট্রেটারের কাছ থেকে সংগ্রহ সংগ্রহ করেন, তখন আপনাকে অলস থাকতে হবে এবং মূল্যায়ন হয় happens উভয় স্ট্রিম এবং আইট্রেটার কেবল একবারই গ্রাস করা যায়।

সুতরাং আপনার পদ্ধতির ইন্টারফেসগুলির জন্য, আরও সাধারণ উপায় (অলসতার অনুমতি দেওয়া) হ'ল স্ট্রিম ইন্টারফেসটি ব্যবহার করা (যখনই আপনি আগে পরিমার্জনযোগ্য ব্যবহার করতেন)। @ ফিলিপিস যেমন বলেছেন, এটি তাদের স্ট্রিম পাইপলাইনে ব্যবহার করতে দেয়।

আশা করি, যেহেতু স্ট্রিম এখন একটি সরকারী জাভা স্ট্যান্ডার্ড ইন্টারফেস, তাই আরও অনেক বেশি গ্রন্থাগার এবং ফাংশন থাকবে যা দক্ষতার সাথে সরাসরি স্ট্রিমে কাজ করতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.