এই পোস্টে আমরা জাভাতে ArrayList এবং Vector-এর পার্থক্য বুঝব।
ArrayList
- এটি সিঙ্ক্রোনাইজড (synchronized) নয়।
- যদি এলিমেন্টের সংখ্যা ArrayList-এর ক্যাপাসিটি অতিক্রম করে, তবে বর্তমান অ্যারে সাইজ ৫০% বাড়ায়।
- এটি থ্রেড-সেফ (thread-safe) নয়।
- JDK 1.2-এ চালু করা হয়েছিল।
- এটি শুধু ইটারেটর (iterator) ব্যবহার করে ট্রাভার্স করতে পারে।
- নন-সিঙ্ক্রোনাইজড হওয়ায় এটি দ্রুত।
- এলিমেন্টগুলো ট্রাভার্স করার জন্য Iterator ইন্টারফেস ব্যবহার করে।
উদাহরণ
ArrayListal = new ArrayList ();
Vector
- এটি সিঙ্ক্রোনাইজড (synchronized)।
- এটি থ্রেড সেফ (thread safe)।
- এটি একটি লিগ্যাসি (legacy) ক্লাস।
- সিঙ্ক্রোনাইজড হওয়ায় এটি ধীর (slow)।
- যদি এলিমেন্টের সংখ্যা Vector-এর ক্যাপাসিটি অতিক্রম করে, তবে বর্তমান অ্যারে সাইজ ১০০% বাড়ায়।
- এটি enumarator এবং iterator দুটোই ব্যবহার করে ট্রাভার্স করতে পারে।
- ArrayList-এর চেয়ে এটি পছন্দ করা হয়।
- এটি মাল্টি-থ্রেডিং এনভায়রনমেন্ট প্রদান করে।
- কারেন্ট থ্রেড নির্দিষ্ট অবজেক্টে লক রিলিজ না করার পর্যন্ত অন্য থ্রেডগুলো রানেবল বা নন-রানেবল স্টেটে ধরে রাখে।
- এলিমেন্টগুলো ট্রাভার্স করার জন্য 'Iterator' ইন্টারফেস বা Enumeration ইন্টারফেস ব্যবহার করতে পারে।
উদাহরণ
Vectorv = new Vector ();