তখন আমাকে জিজ্ঞাসা করা হয়েছিল যে এই প্রোগ্রামটি কতগুলি স্ট্রিং উত্পন্ন করবে তা ধরে নিয়েই আবর্জনা সংগ্রহের ঘটনা ঘটবে না। এন = 3 এর জন্য আমার চিন্তাভাবনাগুলি ছিল (7)
স্ট্রিং 1 ( ""
) এবং 2 ( "a"
) প্রোগ্রামটির ধ্রুবক, এগুলি জিনিসগুলির অংশ হিসাবে তৈরি হয় না তবে 'অভ্যন্তরীণ' হয় কারণ সেগুলি সংকলক সম্পর্কে জেনে থাকা স্থির হয়। উইকিপিডিয়ায় স্ট্রিং ইন্টার্নিংয়ের বিষয়ে আরও পড়ুন ।
এটি "a"
স্ট্রিং # 2 এর সমান হওয়ায় গণনা থেকে 5 এবং 7 টি স্ট্রিংও সরিয়ে দেয় । এটি স্ট্রিং # 3, # 4, এবং # 6 ছেড়ে দেয়। আপনার কোডটি ব্যবহার করে উত্তরটি হ'ল "3 টি স্ট্রিং এন = 3 এর জন্য তৈরি করা হয়েছে"।
N এর গণনা 2 স্পষ্টত ভুল কারণ এন = 3, এই 9 হবে এবং এমনকি আপনার সবচেয়ে খারাপ ক্ষেত্রে উত্তর, ছিল শুধুমাত্র 7. যদি আপনার অ-অন্তরীণ স্ট্রিং সঠিক ছিল দ্বারা, উত্তর করা উচিত 2n + 1 টি হয়েছে।
সুতরাং, আপনি কিভাবে এটি করা উচিত প্রশ্ন ?
স্ট্রিং যেহেতু পরিবর্তনযোগ্য, তাই আপনি একটি পরিবর্তনীয় জিনিস চাই - এমন কিছু যা আপনি নতুন অবজেক্ট তৈরি না করেই পরিবর্তন করতে পারেন। এটি স্ট্রিংবিল্ডার ।
প্রথম দেখার বিষয় কনস্ট্রাক্টররা। এক্ষেত্রে আমরা জানি যে স্ট্রিংটি কত দিন হবে এবং এমন একটি নির্মাতা রয়েছে StringBuilder(int capacity)
যার অর্থ আমরা আমাদের প্রয়োজন হিসাবে যথাযথভাবে বরাদ্দ করি।
এর পরে, স্ট্রিং"a"
হওয়ার দরকার নেই , বরং এটি একটি চরিত্র হতে পারে । বনাম কল করার সময় এটির কিছুটা ছোটখাটো পারফরম্যান্স রয়েছে - এর সাথে , পদ্ধতিটি স্ট্রিংটি কত দীর্ঘ তা খুঁজে বের করা এবং সে সম্পর্কে কিছু কাজ করা উচিত। অন্যদিকে, সর্বদা হ'ল এক অক্ষর দীর্ঘ।'a'
append(String)
append(char)
append(String)
char
কোডের পার্থক্যগুলি স্ট্রিংবিল্ডার.এপেন্ড (স্ট্রিং) বনাম স্ট্রিংবিল্ডার.অ্যাপেন্ড (চর) এ দেখা যায় । এটি খুব বেশি উদ্বিগ্ন হওয়ার মতো বিষয় নয়, তবে আপনি যদি নিয়োগকর্তাকে মুগ্ধ করার চেষ্টা করছেন তবে সর্বোত্তম সম্ভাব্য অনুশীলনগুলি ব্যবহার করা ভাল।
সুতরাং, আপনি যখন এটি একসাথে রেখেছেন তখন এটি কেমন দেখাচ্ছে?
public String foo(int n) {
StringBuilder sb = new StringBuilder(n);
for (int i = 0; i < n; i++) {
sb.append('a');
}
return sb.toString();
}
একটি স্ট্রিংবিল্ডার এবং একটি স্ট্রিং তৈরি করা হয়েছে। ইন্টার্নযুক্ত করার জন্য কোনও অতিরিক্ত স্ট্রিংয়ের প্রয়োজন নেই।
Eclipse এ আরও কিছু সাধারণ প্রোগ্রাম লিখুন। পিএমডি ইনস্টল করুন এবং আপনার লেখা কোডটিতে এটি চালান। এটি কী সম্পর্কে অভিযোগ করে তা নোট করুন এবং সেগুলি ঠিক করুন। এটির সাথে একটি লুপ + একটি স্ট্রিং পরিবর্তনের পাওয়া যেত, এবং যদি আপনি StringBuilder যে পরিবর্তিত, এটা হতো হয়তো প্রাথমিক ধারণক্ষমতা পাওয়া গিয়েছিলো, কিন্তু এটা অবশ্যই এর মধ্যে পার্থক্য ধরতে হবে .append("a")
এবং.append('a')