ওয়েল, একটি 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>()স্কালা ব্লগ তৈরি করতাম আপনি কি বিশ্বাস করবেন যে প্রত্যেকে সংগ্রহের ধার্মিকতা অর্জনের জন্য তালিকাটি ব্যবহার করে - তবে ভেক্টর কি সাধারণ-উদ্দেশ্য যথেষ্ট যে আমাদের এটি তালিকার জায়গায় ব্যবহার করা উচিত?