ওয়েল, একটি List
অবিশ্বাস্যভাবে দ্রুত হতে পারে আলগোরিদিম সঙ্গে একমাত্র প্রয়োগ করা যেতে পারে ::
, head
এবং tail
। আমি খুব সাম্প্রতিককালে এর একটি অবজেক্ট পাঠ পেয়েছি, যখন আমি জাভা'র পরিবর্তে split
একটি এর List
পরিবর্তে একটি জেনারেশন তৈরি করেছিলাম Array
এবং অন্য কিছু দিয়ে এটি হারাতে পারি না।
তবে, List
একটি মৌলিক সমস্যা আছে: এটি সমান্তরাল অ্যালগরিদমের সাথে কাজ করে না। আমি List
একটি দক্ষ পদ্ধতিতে একটিকে একাধিক বিভাগে বিভক্ত করতে বা এটিকে সামনে যুক্ত করতে পারি না ।
অন্যান্য ধরণের সংগ্রহ রয়েছে যা সমান্তরালতা আরও ভালভাবে পরিচালনা করতে পারে - এবং সেগুলির Vector
মধ্যে একটি। Vector
এছাড়াও দুর্দান্ত লোকালয় রয়েছে - যা List
নেই - যা কিছু অ্যালগরিদমের জন্য একটি বাস্তব প্লাস হতে পারে।
সুতরাং, বিবেচিত সমস্ত বিষয় Vector
হ'ল সর্বোত্তম পছন্দ হ'ল যদি না আপনি নির্দিষ্ট বিবেচনা না করে যা অন্য সংগ্রহগুলির মধ্যে একটিকে পছন্দনীয় করে তোলে - উদাহরণস্বরূপ, আপনি বেছে নিতে Stream
পারেন যদি আপনি অলস মূল্যায়ন এবং ক্যাশে চান ( Iterator
দ্রুত তবে ক্যাশে নেই), বা List
যদি আমি উল্লিখিত অপারেশনগুলির সাথে অ্যালগরিদমটি স্বাভাবিকভাবেই প্রয়োগ করা হয়।
উপায় দ্বারা, এটি ব্যবহার করার জন্য বাঞ্ছনীয় Seq
বা IndexedSeq
যদি না আপনি API- এর একটি নির্দিষ্ট স্থানের (যেমন চান List
এর ::
), অথবা এমনকি GenSeq
বা GenIndexedSeq
যদি আপনার এলগরিদম সমান্তরাল চালানো যেতে পারে।
List<String> l = new ArrayList<String>()
স্কালা ব্লগ তৈরি করতাম আপনি কি বিশ্বাস করবেন যে প্রত্যেকে সংগ্রহের ধার্মিকতা অর্জনের জন্য তালিকাটি ব্যবহার করে - তবে ভেক্টর কি সাধারণ-উদ্দেশ্য যথেষ্ট যে আমাদের এটি তালিকার জায়গায় ব্যবহার করা উচিত?