উত্তর:
পার্থক্য
ভেক্টরগুলি ব্যবহারের জন্য নির্দিষ্ট কোনও প্রয়োজনীয়তা না থাকলে অ্যারেলিস্টগুলি ব্যবহার করুন।
সিংক্রোনাইজ
যদি একাধিক থ্রেড একই সাথে একটি অ্যারেলিস্টে অ্যাক্সেস করে তবে আমাদের অবশ্যই কোডের ব্লকটিকে বাহ্যিকভাবে সিঙ্ক্রোনাইজ করতে হবে যা তালিকাটিকে কাঠামোগতভাবে পরিবর্তন করে বা কেবল কোনও উপাদানকে সংশোধন করে। কাঠামোগত পরিবর্তন মানে তালিকা থেকে উপাদান (গুলি) যোগ করা বা মোছা। বিদ্যমান উপাদানের মান নির্ধারণ কোনও কাঠামোগত পরিবর্তন নয়।
Collections.synchronizedList
সাধারণত তালিকা তৈরির সময় তালিকায় কোনও দুর্ঘটনাক্রমে অযৌক্তিক অ্যাক্সেস এড়ানোর জন্য ব্যবহৃত হয়।
ডেটা বৃদ্ধি
অভ্যন্তরীণভাবে, অ্যারেলিস্ট এবং ভেক্টর উভয়ই একটি অ্যারে ব্যবহার করে তাদের বিষয়বস্তু ধরে রাখে। যখন কোনও উপাদান একটি অ্যারেলিস্ট বা ভেক্টরের মধ্যে .োকানো হয় তখন ঘরটি বাইরে চলে গেলে অবজেক্টটির অভ্যন্তরীণ অ্যারেটি প্রসারিত করতে হবে। একজন ভেক্টর তার অ্যারের আকার দ্বিগুণ করতে ডিফল্ট, যখন অ্যারেলিস্ট তার অ্যারের আকার 50 শতাংশ বৃদ্ধি করে।
ডকুমেন্টেশন যেমন বলে, a Vector
এবং an ArrayList
প্রায় সমতুল্য। পার্থক্যটি হ'ল Vector
একটিতে অ্যাক্সেস সিঙ্ক্রোনাইজ করা হয়, যেখানে একটিতে অ্যাক্সেস ArrayList
হয় না। এর অর্থ হ'ল Vector
একবারে কেবলমাত্র একটি থ্রেড পদ্ধতিতে কল করতে পারে এবং লকটি অর্জনের ক্ষেত্রে সামান্য ওভারহেড থাকে; আপনি যদি এটি ব্যবহার করেন তবে ArrayList
এটি কেস নয়। সাধারণত, আপনি একটি ব্যবহার করতে চাইবেন ArrayList
; একক থ্রেডযুক্ত ক্ষেত্রে এটি আরও ভাল পছন্দ, এবং বহু-থ্রেড ক্ষেত্রে আপনি লকিংয়ের উপর আরও ভাল নিয়ন্ত্রণ পেতে পারেন। সমবর্তী পাঠের অনুমতি দিতে চান? ফাইন। দশটি ব্যাচের ব্যাচের জন্য একটি সিঙ্ক্রোনাইজেশন সম্পাদন করতে চান? ঠিক আছে। এটি আপনার শেষ দিকে আরও একটু যত্ন প্রয়োজন, তবে সম্ভবত আপনি যা চান তা সম্ভবত। এছাড়াও মনে রাখবেন যে আপনার যদি অ্যারেলিস্ট থাকে তবে আপনি এটিটি ব্যবহার করতে পারেনCollections.synchronizedList
একটি সিঙ্ক্রোনাইজড তালিকা তৈরি করতে ফাংশন, এভাবে আপনাকে একটি এর সমতুল্য করে Vector
।
Vector
এটি একটি ভাঙা শ্রেণি যা থ্রেডসেফ নয় , যদিও এটি "সিঙ্ক্রোনাইজড" হওয়া সত্ত্বেও এটি কেবলমাত্র শিক্ষার্থী এবং অন্যান্য অনভিজ্ঞ প্রোগ্রামার দ্বারা ব্যবহৃত হয়।
ArrayList
পেশাদার এবং অভিজ্ঞ প্রোগ্রামারদের দ্বারা ব্যবহৃত গো-টু তালিকা বাস্তবায়ন।
থ্রেডসেফের তালিকা বাস্তবায়ন চায় এমন পেশাদাররা ক CopyOnWriteArrayList
।
Vector
হওয়ার উদ্দেশ্য নিয়েছিলেন, তবে এটির ডিজাইনের ত্রুটি রয়েছে যা এটিকে * থ্রেডস্যাফ আসলে নয়, এটি মূলত অবহেলিত শ্রেণি। কোন কারণে, বিশ্ববিদ্যালয় ইত্যাদি এই সংবাদ সম্পর্কে শোনেনি এবং এখনও এর ব্যবহারের পক্ষে রয়েছে।
ArrayList
আরও নতুন এবং 20-30% দ্রুত।
আপনার যদি কিছু স্পষ্টতই আপাতভাবে প্রকাশিত প্রয়োজন হয় না Vector
, ব্যবহার করুনArrayList
20-30% faster
?
ভেক্টর এবং অ্যারেলিস্টের মধ্যে দুটি প্রধান পার্থক্য রয়েছে।
ভেক্টর ডিফল্ট দ্বারা সিঙ্ক্রোনাইজ হয় এবং অ্যারেলিস্ট হয় না। দ্রষ্টব্য: আপনি সংগ্রহগুলি.সিনক্রোনাইজডলিস্ট () পদ্ধতিতে অ্যারেলিস্ট বস্তুটি পাস করে অ্যারেলিস্টকেও সিঙ্ক্রোনাইজ করতে পারেন। সিঙ্ক্রোনাইজ করা অর্থ: এটি কোনও পার্শ্ব প্রতিক্রিয়া সহ একাধিক থ্রেড সহ ব্যবহার করা যেতে পারে।
নতুন উপাদানগুলির জন্য স্থান পর্যাপ্ত না হলে অ্যারেলিস্টগুলি আগের আকারের 50% দ্বারা বৃদ্ধি পায়, যেখানে নতুন আগত উপাদানগুলির জন্য স্থান না থাকলে ভেক্টর হিসাবে আগের আকারের 100% বৃদ্ধি পাবে।
এগুলি ব্যতীত, প্রোগ্রামিং প্রচেষ্টার ক্ষেত্রে তাদের মধ্যে কিছু ব্যবহারিক পার্থক্য রয়েছে:
কোনটি ব্যবহার করবেন?
দ্রষ্টব্য : যদিও অ্যারেলিস্টটি 100% বৃদ্ধি পেয়েছে, আপনি প্রাথমিক পর্যায়ে পর্যাপ্ত মেমরির বরাদ্দ করছেন তা নিশ্চিত করার জন্য আপনি নিশ্চিতকরণের ক্ষমতা () পদ্ধতি দ্বারা এড়াতে পারবেন।
আশা করি এটা সাহায্য করবে.
ArrayList
এবং Vector
উভয়ই প্রয়োগ করে তালিকার ইন্টারফেস এবং সন্নিবেশ ক্রম বজায় রাখে B তবে এখানে ArrayList
এবং Vector
শ্রেণীর মধ্যে অনেক পার্থক্য রয়েছে ...
ArrayList
সিঙ্ক্রোনাইজ করা হয় না।ArrayList
উপাদানগুলির সংখ্যাটি তার ক্ষমতা থেকে বেশি হলে বর্তমান অ্যারে আকারের 50% বৃদ্ধি পায়।ArrayList
লিগ্যাসি ক্লাস নয়, এটি জেডিকে ১.২ এ প্রবর্তিত হয়েছে।ArrayList
দ্রুত কারণ এটি অ-সিঙ্ক্রোনাইজড।ArrayList
উপাদানগুলি অতিক্রম করতে Iterator ইন্টারফেস ব্যবহার করে।ভেক্টর -
Vector
সিঙ্ক্রোনাইজ করা হয়।Vector
ইনক্রিমেন্ট 100% এর অর্থ হ'ল অ্যারের আকার দ্বিগুণ হয় যদি উপাদানগুলির মোট সংখ্যা তার ক্ষমতার চেয়ে বেশি হয়।Vector
একটি উত্তরাধিকার শ্রেণি।
Vector
ধীর গতির কারণ এটি সিঙ্ক্রোনাইজ করা হয়েছে অর্থাত্ মাল্টিথ্রেডিং পরিবেশে এটি অন্যান্য থ্রেডগুলি চলমানযোগ্য বা চালিতযোগ্য অবস্থায় ধরে রাখবে যতক্ষণ না বর্তমান থ্রেড অবজেক্টের লক প্রকাশ না করে।
Vector
উপাদানগুলি অতিক্রম করতে গণনা ইন্টারফেস ব্যবহার করে। তবে এটি আইট্রেটারও ব্যবহার করতে পারে।
আরও দেখুন: https://www.javatPoint.com/differences-between-arraylist-and-vector
মূলত অ্যারেলিস্ট এবং ভেক্টর উভয়ই অভ্যন্তরীণ অবজেক্ট অ্যারে ব্যবহার করে।
অ্যারেলিস্ট: অ্যারেলিস্ট ক্লাসটি অ্যাবস্ট্রাকলিস্ট প্রসারিত করে তালিকা ইন্টারফেস এবং র্যান্ডমএ্যাক্সেস (মার্কার ইন্টারফেস) প্রয়োগ করে। অ্যারেলিস্ট গতিশীল অ্যারেগুলিকে সমর্থন করে যা প্রয়োজন অনুযায়ী বাড়তে পারে। এটি আমাদের উপাদানগুলির উপর প্রথম পুনরাবৃত্তি দেয়। অ্যারেলিস্ট অভ্যন্তরীণ অবজেক্ট অ্যারে ব্যবহার করে; এগুলি 10 এর একটি ডিফল্ট প্রাথমিক আকারের সাথে তৈরি করা হয় যখন এই আকারটি অতিক্রম করা হয়, সংগ্রহটি স্বয়ংক্রিয়ভাবে 15 এর ডিফল্ট আকারের অর্ধেক হয়ে যায়।
ভেক্টর: ভেক্টর অ্যারেলিস্টের অনুরূপ তবে পার্থক্যগুলি হ'ল এটি সিঙ্ক্রোনাইজ করা হয় এবং এর ডিফল্ট প্রাথমিক আকার 10 হয় এবং আকার যখন তার আকারের চেয়ে বেশি হয় মূল আকারের দ্বিগুণ হয়ে যায় যার অর্থ নতুন আকার হবে 20. ভেক্টরটি একমাত্র শ্রেণি অ্যারেলিস্ট ব্যতীত র্যান্ডমএ্যাক্সেস প্রয়োগ করতে। ভেক্টরটির মধ্যে চারটি কনস্ট্রাক্টর রয়েছে যার মধ্যে দুটি প্যারামিটার লাগে ভেক্টর (ইন্ট প্রারম্ভিক ক্ষমতা, ইন্টি কেপিসিটি ইনক্রিমেন্ট) ক্যাপাসিটি ইনক্রিমেন্টটি সেই পরিমাণ যা দ্বারা ভেক্টর ওভারফ্লো হয়ে যাওয়ার পরে ক্ষমতা বৃদ্ধি করা হয়, সুতরাং এতে লোড ফ্যাক্টরের উপর আরও নিয়ন্ত্রণ থাকে।
কিছু অন্যান্য পার্থক্য হ'ল: