আমি ভাবছিলাম যে কীভাবে কোনও পূর্ণসংখ্যার অ্যারের সূচনা করা যায় যে এটির আকার এবং মানগুলি আমার প্রোগ্রামটি কার্যকর করার মাধ্যমে কোনও প্রস্তাবনা দিয়ে পরিবর্তন করতে পারে?
আমি ভাবছিলাম যে কীভাবে কোনও পূর্ণসংখ্যার অ্যারের সূচনা করা যায় যে এটির আকার এবং মানগুলি আমার প্রোগ্রামটি কার্যকর করার মাধ্যমে কোনও প্রস্তাবনা দিয়ে পরিবর্তন করতে পারে?
উত্তর:
হ্যাঁ: অ্যারেলিস্ট ব্যবহার করুন ।
জাভাতে, "সাধারণ" অ্যারেগুলি স্থির-আকারের হয়। আপনাকে তাদের একটি আকার দিতে হবে এবং সেগুলি প্রসারিত বা চুক্তি করতে পারে না। আকার পরিবর্তন করতে আপনাকে একটি নতুন অ্যারে তৈরি করতে হবে এবং আপনার যে ডেটা চান তা অনুলিপি করতে হবে - যা অদক্ষ এবং আপনার জন্য ব্যথা।
ভাগ্যক্রমে, এখানে সমস্ত ধরণের অন্তর্নির্মিত ক্লাস রয়েছে যা সাধারণ ডেটা স্ট্রাকচার প্রয়োগ করে এবং অন্যান্য দরকারী সরঞ্জামগুলিও। তাদের পুরো তালিকার জন্য আপনি জাভা 6 এপিআই চেক করতে চাইবেন ।
একটি সতর্কতামূলক: অ্যারেলিস্ট কেবলমাত্র বস্তুগুলি ধরে রাখতে পারে (উদাহরণস্বরূপ পূর্ণসংখ্যার), আদিম নয় (যেমন ints)। বেশিরভাগ ক্ষেত্রে, অটোবক্সিং / স্বতঃবক্সিং আপনার জন্য নিঃশব্দে যত্ন নেবে তবে আপনি যা করছেন তার উপর নির্ভর করে আপনি কিছু অদ্ভুত আচরণ পেতে পারেন।
size
প্রোগ্রামটি চলার সাথে সাথে অ্যারেটি মাপতে আকার পরিবর্তন করে না ; এটি size
যখন লাইনটি কার্যকর করা হয় তখন আকারটি যা ঘটে তা পায় ।
null
দিয়ে শেষ করি। কোন ধারণা কেন?
জাভাতে অ্যারেগুলি নির্দিষ্ট আকারের। আপনার যা দরকার তা হ'ল একটি অ্যারেলিস্ট, জাভাতে উপলব্ধ বহু মূল্যবান সংগ্রহগুলির মধ্যে একটি।
পরিবর্তে
Integer[] ints = new Integer[x]
তুমি ব্যাবহার কর
List<Integer> ints = new ArrayList<Integer>();
তারপরে আপনি যে তালিকাটি ব্যবহার করছেন তার তালিকা পরিবর্তন করতে ints.add(y)
এবং ints.remove(z)
অন্যান্য অনেকগুলি সহজ পদ্ধতির মধ্যে আপনি উপযুক্ত জাভাদোকগুলিতে খুঁজে পেতে পারেন।
আমি জাভাতে উপলভ্য সংগ্রহের ক্লাসগুলি অধ্যয়নের জন্য দৃ recommend়ভাবে সুপারিশ করি কারণ তারা খুব শক্তিশালী এবং আপনাকে অনেকগুলি বিল্টিন কার্যকারিতা দেয় যা জাভা-নবাবিরা অহেতুক নিজেকে লেখার চেষ্টা করে।
List<Integer>
পরিবর্তে ব্যবহার করবেন না কেন ArrayList<Integer>
?
অ্যারেগুলি একবার তাত্ক্ষণিকভাবে স্থির আকারের হয়। পরিবর্তে আপনি একটি তালিকা ব্যবহার করতে পারেন।
অটোবক্সিং একটি তালিকাটিকে একটি অ্যারের অনুরূপ ব্যবহারযোগ্য করে তোলে, আপনি এটিতে কেবল ইনট-মান রাখতে পারেন:
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
আমি আগের উত্তর পরামর্শ সঙ্গে মতানৈক্য ArrayList
, কারণ ArrayList
হয় না ডাইনামিক এরে কিন্তু একটি তালিকা সমর্থিত একটি অ্যারের দ্বারা। পার্থক্যটি হ'ল আপনি নিম্নলিখিতটি করতে পারবেন না:
ArrayList list = new ArrayList(4);
list.put(3,"Test");
এটি আপনাকে একটি সূচকআউটআউটবাউন্ডসেক্সপশন দেবে কারণ এই অবস্থানটিতে এখনও কোনও উপাদান নেই যদিও ব্যাকিং অ্যারে যেমন যুক্ত করার অনুমতি দেয়। সুতরাং আপনার @ কপিরাইট-লেন্স প্রস্তাবিত কাস্টম এক্সটেন্ডেবল অ্যারে বাস্তবায়ন ব্যবহার করতে হবে
Simple code for dynamic array. In below code then array will become full of size we copy all element to new double size array(variable size array).sample code is below
public class DynamicArray {
static int []increaseSizeOfArray(int []arr){
int []brr=new int[(arr.length*2)];
for (int i = 0; i < arr.length; i++) {
brr[i]=arr[i];
}
return brr;
}
public static void main(String[] args) {
int []arr=new int[5];
for (int i = 0; i < 11; i++) {
if (i<arr.length) {
arr[i]=i+100;
}
else {
arr=increaseSizeOfArray(arr);
arr[i]=i+100;
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println("arr="+arr[i]);
}
}
}
এটি ছোট স্কেল আকারের সাথে ডিল করতে তালিকা ব্যবহার করার পরামর্শ দেওয়া হচ্ছে।
আপনার যদি বিপুল সংখ্যক সংখ্যা থাকে তবে কখনও তালিকা এবং অটোবক্সিং ব্যবহার করবেন না ,
<পূর্ণসংখ্যা> তালিকা
প্রতিটি একক জন্য, একটি নতুন পূর্ণসংখ্যা স্বয়ংক্রিয় তৈরি হয়। তালিকার আকার বৃদ্ধি পেলে আপনি এটি ধীরগতিতে দেখতে পাবেন। এই পূর্ণসংখ্যা অপ্রয়োজনীয় জিনিস। এই ক্ষেত্রে, একটি আনুমানিক আকার ব্যবহার করা আরও ভাল হবে,
int[] array = new int[ESTIMATED_SIZE];
List
পরিবর্তে ব্যবহার সম্পর্কে কীভাবে ? উদাহরণ স্বরূপ,ArrayList<integer>
আপনি কোনও অ্যারের আকার পরিবর্তন করতে পারবেন না। তবে আপনি সঠিক মাপের সাথে একটি নতুন অ্যারে তৈরি করতে এবং পুরানো অ্যারে থেকে নতুনটিতে ডেটা অনুলিপি করতে পারেন।
তবে আপনার সেরা বিকল্পটি হল জাকার্তা কমন্স থেকে ইন্টলিস্ট ব্যবহার করা। ( এখানে )
এটি কেবল একটি তালিকার মতো কাজ করে তবে কম স্থান নেয় এবং এর চেয়ে বেশি দক্ষ, কারণ এটি ইনট এর উপর র্যাপার বস্তুগুলি সংরক্ষণের পরিবর্তে ইনট এর সঞ্চয় করে (এটি পূর্ণসংখ্যা শ্রেণিটি কী)।
আমি এই প্রশ্নের উত্তর দিয়েছি এবং না আপনার কোনও অ্যারেলিস্ট বা অন্য কোনও জিনিসের দরকার নেই এটি একটি অ্যাসাইনমেন্ট ছিল এবং আমি এটি সম্পন্ন করেছি যাতে হ্যাঁ অ্যারেগুলি আকারে বাড়তে পারে। এখানে লিঙ্ক জাভা ডায়নামিক এরে কীভাবে ব্যবহার করতে হয় এবং এখানে আমার প্রশ্ন যা আমি উত্তর দিলাম জন্য লিঙ্ক জাভা ডায়নামিক অ্যারে
int[] array = new int[size];
size
একটি পরিবর্তনশীল, কিন্তু একটি অ্যারের দৈর্ঘ্য সংশোধন করা আবশ্যক, আমি ডান @Lord Torgamus আছি?