প্রযুক্তিগতভাবে, এটি 10
শূন্য নয়, আপনি যদি ব্যাকিং অ্যারের অলস সূচনা করার জন্য স্বীকার করেন। দেখা:
public boolean add(E e) {
ensureCapacityInternal(size + 1);
elementData[size++] = e;
return true;
}
private void ensureCapacityInternal(int minCapacity) {
if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {
minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity);
}
ensureExplicitCapacity(minCapacity);
}
কোথায়
private static final int DEFAULT_CAPACITY = 10;
আপনি যা উল্লেখ করছেন তা হ'ল শূন্য আকারের প্রাথমিক অ্যারে অবজেক্ট যা প্রাথমিকভাবে সমস্ত শূন্য ArrayList
অবজেক্টের মধ্যে ভাগ করা হয় । অর্থাৎ এর সক্ষমতা অলসভাবে10
গ্যারান্টিযুক্ত , একটি অপ্টিমাইজেশন যা জাভা 7 এও উপস্থিত।
স্বীকার করা, নির্মাতা চুক্তি পুরোপুরি সঠিক নয়। সম্ভবত এটি এখানে বিভ্রান্তির উত্স।
পটভূমি
এখানে মাইক ডিউগুয়ের একটি ইমেল রয়েছে
আমি খালি অ্যারেলিস্ট এবং হ্যাশম্যাপ প্যাচের একটি আপডেট সংস্করণ পোস্ট করেছি।
http://cr.openjdk.java.net/~mduigou/JDK-7143928/1/webrev/
এই সংশোধিত বাস্তবায়ন শ্রেণীর জন্য কোনও নতুন ক্ষেত্রের পরিচয় দেয় না । অ্যারেলিস্টের জন্য ব্যাকিং অ্যারের অলস বরাদ্দটি তখনই ঘটে যখন তালিকাটি ডিফল্ট আকারে তৈরি করা হয়। আমাদের পারফরম্যান্স বিশ্লেষণ দল অনুসারে, অ্যারেলিস্টের প্রায় 85% দৃষ্টান্তটি ডিফল্ট আকারে তৈরি করা হয় তাই এই অপ্টিমাইজেশানটি অত্যধিক সংখ্যক ক্ষেত্রে বৈধ হবে।
হাশম্যাপের জন্য, বালতি অ্যারের প্রয়োজন না হওয়া পর্যন্ত অনুরোধ করা প্রাথমিক আকারটি ট্র্যাক করার জন্য সৃজনশীল ব্যবহার প্রান্তিক ক্ষেত্রটি দিয়ে তৈরি করা হয়। পঠনের দিকে খালি মানচিত্রের কেসটি ইম্পেটি () দিয়ে পরীক্ষা করা হয়। লেখার আকারে বালতি অ্যারে স্ফীত করার প্রয়োজনীয়তা সনাক্ত করতে (টেবিল == EMPTY_TABLE) একটি তুলনা ব্যবহার করা হয়। রিডবজেক্টে একটি দক্ষ প্রাথমিক দক্ষতা বেছে নেওয়ার চেষ্টা করার জন্য আরও কিছু কাজ রয়েছে।
থেকে: http://mail.openjdk.java.net/pipermail/core-libs-dev/2013- এপ্রিল / 015585.html