জাভা ইন্টারস্ট্রিম পুনরাবৃত্তি বনাম কখন ব্যবহার করবেন?


19

দেখে মনে IntStream.iterateহচ্ছে এটি কেবল একটি হালকা ওজনের আদেশযুক্ত সংস্করণ IntStream.generate। এটা সত্যি? তা না হলে মূল পার্থক্যটি কী?

উত্তর:


21

তাদের স্বাক্ষরগুলি কীভাবে আলাদা তা লক্ষ্য করুন:

  • generateএটি গ্রহণ করে IntSupplier, যার অর্থ আপনি কিছু না দিয়ে কালি তৈরি করার কথা। উদাহরণ ব্যবহারের মধ্যে একই সংখ্যার একটি ধ্রুবক স্ট্রিম তৈরি করা এবং এলোমেলো পূর্ণসংখ্যার একটি স্ট্রিম তৈরি করা অন্তর্ভুক্ত। প্রবাহের প্রতিটি উপাদান কীভাবে পূর্ববর্তী উপাদানের উপর নির্ভর করে না তা লক্ষ করুন।

  • iterateএকটি seedএবং একটি নেয় IntUnaryOperator, যার অর্থ আপনি আগের উপাদানটির উপর ভিত্তি করে প্রতিটি উপাদান তৈরি করার কথা । এটি একটি inductively সংজ্ঞায়িত ক্রম তৈরির জন্য দরকারী, উদাহরণস্বরূপ। এই ক্ষেত্রে, প্রতিটি উপাদান পূর্ববর্তীটির উপর নির্ভর করে বলে মনে করা হচ্ছে ।


সুতরাং পুনরাবৃত্তির ক্ষেত্রে ব্যবহার করুন - যখন রাষ্ট্রটি সংরক্ষণ করতে হবে - এটিই মূল পার্থক্য। অন্য কোথাও স্টেট সংরক্ষণের প্রয়োজন জেনারেট করুন। এবং ইটারেটের অর্ডার দেওয়া হয়েছে, যখন উত্সাহিত করা হচ্ছে আনর্ডার্ড করা যা প্যারালাইলিজমের পক্ষে কার্যকর
জেজে বীম

8
  1. IntStream.iterateএকটি ফেরৎ আদেশIntStream অন্যদিকে IntStream.generateআয় একটি unorderedIntStream যা সমান্তরাল প্রবাহ পাইপলাইনগুলি দ্রুত গাড়ী চালানোর আপ সাহায্য করতে পারেন।

  2. IntStream.generate জাভাডক-এ উল্লিখিত হিসাবে এলোমেলো বা ধ্রুবক মান উত্পন্ন করতে পছন্দ করা হয়, আমি প্রত্যাশিত স্ট্রিমের বৈশিষ্ট্যগুলির জন্য সম্ভবত অনুমান করি।


5

অর্ডার বাদেও ব্যবহারটি কিছুটা আলাদা। আসুন পদ্ধতি স্বাক্ষরগুলি দেখুন:

  • iterate(int seed, IntUnaryOperator f)
  • generate(IntSupplier s)

Iterate স্পষ্টভাবে প্যারামিটার এবং unary অপারেটর হিসাবে প্রারম্ভিক মান দেওয়া হয়েছে যা পূর্বের থেকে পরবর্তী মান উত্পন্ন করতে ব্যবহৃত হয়। এখানে অপারেটর সহজেই অভ্যন্তরীণ অবস্থা ছাড়াই অপরিবর্তনীয় হতে পারে এবং কোনও সমস্যা ছাড়াই সমান্তরালে একাধিক জায়গায় পুনরায় ব্যবহার করা যেতে পারে।

সরবরাহকারী ব্যবহার উত্পন্ন। এগুলি হয় ধ্রুব বা এলোমেলো সংখ্যা সরবরাহ করতে পারে বা সিরিজের (1, 2, 3, ...) সরবরাহ করার জন্য অভ্যন্তরীণ অবস্থা থাকা দরকার।

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