সংক্ষেপে:
অর্ডার উত্স ডেটা কাঠামো এবং মধ্যবর্তী স্ট্রিম ক্রিয়াকলাপগুলির উপর নির্ভর করে। ধরে নিই যে আপনি কোনও List
প্রসেসিং ব্যবহার করছেন তা অর্ডার করা উচিত (যেহেতু filter
এখানে ক্রমটি পরিবর্তন হবে না)।
আরো বিস্তারিত:
অনুক্রমিক বনাম সমান্তরাল বনাম আনর্ডার্ড:
Javadocs
S sequential()
Returns an equivalent stream that is sequential. May return itself, either because the stream was already sequential, or because the underlying stream state was modified to be sequential.
This is an intermediate operation.
S parallel()
Returns an equivalent stream that is parallel. May return itself, either because the stream was already parallel, or because the underlying stream state was modified to be parallel.
This is an intermediate operation.
S unordered()
Returns an equivalent stream that is unordered. May return itself, either because the stream was already unordered, or because the underlying stream state was modified to be unordered.
This is an intermediate operation.
স্ট্রিম অর্ডারিং:
Javadocs
স্ট্রিমগুলির সংজ্ঞাযুক্ত অর্ডার থাকতে পারে এবং নাও থাকতে পারে। কোনও স্ট্রিমের একটি এনকাউন্টার অর্ডার রয়েছে কিনা তা উত্স এবং মধ্যবর্তী ক্রিয়াকলাপগুলির উপর নির্ভর করে। নির্দিষ্ট স্ট্রিম উত্স (যেমন তালিকা বা অ্যারে) অভ্যন্তরীণভাবে অর্ডার করা হয়, অন্যদিকে (যেমন হ্যাশসেট) নয় not কিছু অন্তর্বর্তী ক্রিয়াকলাপ, যেমন বাছাই করা (), অন্যথায় আনর্ডারড স্ট্রিমের উপর একটি এনকাউন্টার অর্ডার আরোপ করতে পারে এবং অন্যরা অর্ডারড স্ট্রিমটিকে অর্ডারড করে দিতে পারে, যেমন বেসস্ট্রিম.অনর্ডার্ড ()। আরও কিছু টার্মিনাল ক্রিয়াকলাপগুলি এনকাউন্টার অর্ডারকে অগ্রাহ্য করতে পারে, যেমন ফর (প্রতিটি) জন্য।
যদি কোনও স্ট্রিমের অর্ডার দেওয়া হয়, তবে বেশিরভাগ অপারেশনগুলি তাদের মুখোমুখি ক্রমের উপাদানগুলিতে কাজ করতে সীমাবদ্ধ থাকে; যদি কোনও স্ট্রিমের উত্স [1, 2, 3] সমেত একটি তালিকা থাকে তবে এক্সিকিউটিভ মানচিত্রের (x -> x * 2) ফলাফল অবশ্যই [2, 4, 6] হতে হবে। যাইহোক, যদি উত্সটির কোনও সংজ্ঞায়িত মোকাবিলার আদেশ না থাকে তবে মানগুলির [2, 4, 6] কোনও ক্রম বৈধ ফলাফল হবে।
ধারাবাহিক স্ট্রিমগুলির জন্য, একটি এনকাউন্টার অর্ডের উপস্থিতি বা অনুপস্থিতি কার্য সম্পাদনকে প্রভাবিত করে না, কেবল নির্ধারণবাদ। যদি কোনও স্ট্রিমের অর্ডার দেওয়া হয়, তবে অভিন্ন উত্সে অভিন্ন স্ট্রিম পাইপলাইনগুলির পুনরাবৃত্তি কার্যকর করলে অভিন্ন ফলাফল পাওয়া যাবে; যদি এটি অর্ডার না করা হয়, তবে পুনরাবৃত্তি কার্যকরকরণ বিভিন্ন ফলাফল আনতে পারে।
সমান্তরাল স্ট্রিমগুলির জন্য, অর্ডারিং সীমাবদ্ধতাটি শিথিল করা মাঝে মাঝে আরও কার্যকর কার্যকরকরণ সক্ষম করে। নির্দিষ্ট সামগ্রিক ক্রিয়াকলাপগুলি, যেমন ফিল্টারিং ডুপ্লিকেটগুলি (স্বতন্ত্র ()) বা গোষ্ঠীযুক্ত হ্রাস (কালেক্টরস.আরপপিংবি ()) আরও কার্যকরভাবে প্রয়োগ করা যেতে পারে যদি উপাদানগুলির ক্রম প্রাসঙ্গিক না হয়। একইভাবে, সীমাবদ্ধতা (যেমন সীমা) এর মতো অভ্যন্তরীণভাবে এনকাউন্টার অর্ডের সাথে আবদ্ধ হওয়া ক্রিয়াকলাপগুলি সমান্তরালতার সুবিধাটিকে হ্রাস করে যথাযথ ক্রম নিশ্চিত করার জন্য বাফারিংয়ের প্রয়োজন হতে পারে। স্ট্রিমের একটি এনকাউন্টার অর্ডার রয়েছে তবে ব্যবহারকারী বিশেষত সেই এনকাউন্টার অর্ডারের বিষয়ে যত্নশীল নয়, স্পষ্টতই স্ট্রিমটিকে অর্ডারড () দিয়ে ডি-অর্ডার করে কিছু রাষ্ট্রীয় বা টার্মিনাল ক্রিয়াকলাপের জন্য সমান্তরাল কার্যকারিতা উন্নত করতে পারে। তবে বেশিরভাগ স্ট্রিম পাইপলাইনগুলি যেমন উপরের "ব্লকের ওজনের সমষ্টি" উদাহরণ হিসাবে,