পিএইচপি-তে, আপনি নিম্নলিখিত দ্বারা অ্যারেগুলিতে গতিশীলভাবে উপাদান যুক্ত করতে পারেন:
$x = new Array();
$x[] = 1;
$x[] = 2;
এর পর $x
ভালো একটি অ্যারে হবে: {1,2}
।
জাভাতেও অনুরূপ কিছু করার কোনও উপায় আছে?
পিএইচপি-তে, আপনি নিম্নলিখিত দ্বারা অ্যারেগুলিতে গতিশীলভাবে উপাদান যুক্ত করতে পারেন:
$x = new Array();
$x[] = 1;
$x[] = 2;
এর পর $x
ভালো একটি অ্যারে হবে: {1,2}
।
জাভাতেও অনুরূপ কিছু করার কোনও উপায় আছে?
উত্তর:
Java.util.LinkkedList বা java.util.ArrayList দেখুন
List<Integer> x = new ArrayList<Integer>();
x.add(1);
x.add(2);
int[]
) কেবলমাত্র তালিকার toArray()
পদ্ধতিটি ব্যবহার করুন । উপরের কোডটি ব্যবহার করুন তবে x.toArray()
একটি আদিম অ্যারে পেতে ব্যবহার করুন ।
ARRAY
অবজেক্টের মতো কিছু বা এর মতো কিছু বোকামির সাথে হস্তক্ষেপ না করেন তবে আপনি আদিম অ্যারেগুলি এড়িয়ে চলা ভাল better
List
রেফারেন্স ব্যবহার করা আমাদের ArrayList
যেকোন সময় চাইলে কার্বকে লাথি মারতে দেয় । যদি কেউ আরও ভাল তালিকা প্রকাশ করে, যেমন SuperDuperAwesomeList
, আমরা আমাদের রেফারেন্সটি একটি করে রাখি তবে আমাদের অনেক কাজ করতে পারে ArrayList
। অ্যারেলিস্টে এমন জিনিস রয়েছে যা তালিকায় নেই। আমরা যদি আমাদের কোডগুলিতে এই জিনিসগুলির উপর নির্ভর করি তবে এটিকে পরিবর্তন করা আরও অনেক কঠিন হয়ে পড়ে।
জাভাতে অ্যারেগুলির একটি নির্দিষ্ট আকার থাকে, তাই আপনি পিএইচপি-তে যেমন করতে পারেন তেমন "শেষে কিছু যোগ করতে" পারবেন না।
পিএইচপি আচরণের সাথে কিছুটা মিল এটি:
int[] addElement(int[] org, int added) {
int[] result = Arrays.copyOf(org, org.length +1);
result[org.length] = added;
return result;
}
তারপরে আপনি লিখতে পারেন:
x = new int[0];
x = addElement(x, 1);
x = addElement(x, 2);
System.out.println(Arrays.toString(x));
তবে এই স্কিমটি বৃহত্তর অ্যারেগুলির জন্য মারাত্মকভাবে অক্ষম , কারণ এটি প্রতিবার পুরো অ্যারের অনুলিপি করে। (এবং এটি প্রকৃতপক্ষে পিএইচপি এর সমতুল্য নয়, যেহেতু আপনার পুরানো অ্যারেগুলি একই থাকে)।
পিএইচপি অ্যারেগুলি আসলে একটি যুক্ত "সর্বাধিক কী" সহ জাভা হ্যাশম্যাপের মতো একই, সুতরাং এটি কোন কীটি ব্যবহার করতে হবে এবং একটি অদ্ভুত পুনরাবৃত্তির ক্রম (এবং পূর্ণসংখ্যার কী এবং কিছু স্ট্রিংয়ের মধ্যে একটি অদ্ভুত সমতুল্য সম্পর্ক) জানতে পারে। তবে সরল সূচকযুক্ত সংগ্রহের জন্য, জাভাতে অন্য উত্তরদাতাদের প্রস্তাবিতগুলির মতো আরও একটি তালিকা ব্যবহার করুন।
আপনি যদি List
কোনও পূর্ণসংখ্যার প্রত্যেকটি ইনটাকে মোড় করার কারণে ওভারহেড ব্যবহার করা এড়াতে চান , তবে আদি অভ্যন্তরের জন্য অ্যারেগুলি ব্যবহার করে এমন আদিম প্রকারগুলির জন্য সংগ্রহগুলির পুনরায় সংযোজনগুলি ব্যবহার করার বিষয়টি বিবেচনা করুন, তবে কেবলমাত্র অভ্যন্তরীণ অ্যারে পূর্ণ হলেই প্রতিটি পরিবর্তনের অনুলিপি করা হবে না ( ঠিক অ্যারেলিস্টের মতো)। (একটি দ্রুত গুগল করা উদাহরণ হ'ল এটি হ'ল এই ইন্টারলিস্ট ক্লাস ))
পেয়ারা রয়েছে যেমন চাদরে তৈরি পদ্ধতি মধ্যে Ints.asList
, Longs.asList
ইত্যাদি
ArrayList
ঘটে - প্রতিটি অ্যাডের পরিবর্তনের পরিবর্তে, যখন এটি ঘর থেকে বাইরে চলে যায় তখন আকারে দ্বিগুণ হয়ে যায় ফলে প্রায়শই পুনরায় আকার পরিবর্তন করতে হবে না।
org
তার চেয়ে কম খাটো result
।
নতুন অ্যারের শেষে একটি উপাদান যুক্ত করতে অ্যাপাচি কমন্সে একটি অ্যারে ইউটিলস বাস্তবায়ন রয়েছে:
/** Copies the given array and adds the given element at the end of the new array. */
public static <T> T[] add(T[] array, T element)
এই প্রশ্নটি আমি ওয়েবে খুব প্রায়ই দেখেছি এবং আমার মতে, উচ্চ খ্যাতি সম্পন্ন অনেক লোক এই প্রশ্নের উত্তর সঠিকভাবে দেননি। তাই আমি এখানে নিজের উত্তরটি প্রকাশ করতে চাই।
আমরা প্রথমে বিবেচনা করা উচিত সেখানে হয় পার্থক্য মধ্যে array
এবং arraylist
।
প্রশ্নটি অ্যারেতে একটি উপাদান যুক্ত করার জন্য জিজ্ঞাসা করে , এবং অ্যারেলিস্টে নয়
উত্তরটা বেশ সাধারন. এটি 3 ধাপে করা যেতে পারে।
এবং অবশেষে এখানে কোড:
ধাপ 1:
public List<String> convertArrayToList(String[] array){
List<String> stringList = new ArrayList<String>(Arrays.asList(array));
return stringList;
}
ধাপ ২:
public List<String> addToList(String element,List<String> list){
list.add(element);
return list;
}
ধাপ 3:
public String[] convertListToArray(List<String> list){
String[] ins = (String[])list.toArray(new String[list.size()]);
return ins;
}
পদক্ষেপ 4
public String[] addNewItemToArray(String element,String [] array){
List<String> list = convertArrayToList(array);
list= addToList(element,list);
return convertListToArray(list);
}
আপনি একটি ব্যবহার করতে পারেন ArrayList
এবং তারপরে toArray()
পদ্ধতিটি ব্যবহার করতে পারেন । তবে আপনি যা করছেন তার উপর নির্ভর করে আপনার এমনকি কোনও অ্যারেও লাগবে না। Lists
আপনি চান আরও কি না তা দেখার জন্য দেখুন।
দেখুন: জাভা তালিকা টিউটোরিয়াল
আপনি সম্ভবত এটির জন্য একটি অ্যারেলিস্ট ব্যবহার করতে চান - কাঠামোর মতো গতিযুক্ত আকারের অ্যারের জন্য।
আপনি জেভিএ-তে কালেকশন ফ্রেমওয়ার্কগুলি ব্যবহার করে একটি অ্যারেতে গতিশীলভাবে উপাদানগুলি যুক্ত করতে পারেন। সংগ্রহ ফ্রেমওয়ার্ক আদিম ডেটা ধরণের উপর কাজ করে না।
এই সংগ্রহ কাঠামোটি "java.util। *" প্যাকেজে পাওয়া যাবে
উদাহরণস্বরূপ যদি আপনি অ্যারেলিস্ট ব্যবহার করেন,
এটিতে একটি অবজেক্ট তৈরি করুন এবং তারপরে কয়েকটি সংখ্যক উপাদান যুক্ত করুন (স্ট্রিং, পূর্ণসংখ্যার মতো কোনও ধরণের ... ইত্যাদি)
ArrayList a = new ArrayList();
a.add("suman");
a.add(new Integer(3));
a.add("gurram");
এখন আপনাকে একটি অ্যারেতে 3 টি উপাদান যুক্ত করা হয়েছিল।
আপনি যদি যোগ করা উপাদানগুলির কোনও অপসারণ করতে চান
a.remove("suman");
আবার যদি আপনি কোন উপাদান যুক্ত করতে চান
a.add("Gurram");
সুতরাং অ্যারের আকারটি ক্রমশ কমছে / গতিশীলভাবে হ্রাস পাচ্ছে ..
অ্যারের আকারটি স্বয়ংক্রিয়ভাবে বৃদ্ধি করতে অ্যারেগুলিতে একটি অ্যারেলিস্ট বা জগল ব্যবহার করুন।
আপনি কোথায় আদিম অ্যারে রয়েছেন তার একটি গণনা রাখুন
class recordStuff extends Thread
{
double[] aListOfDoubles;
int i = 0;
void run()
{
double newData;
newData = getNewData(); // gets data from somewhere
aListofDoubles[i] = newData; // adds it to the primitive array of doubles
i++ // increments the counter for the next pass
System.out.println("mode: " + doStuff());
}
void doStuff()
{
// Calculate the mode of the double[] array
for (int i = 0; i < aListOfDoubles.length; i++)
{
int count = 0;
for (int j = 0; j < aListOfDoubles.length; j++)
{
if (a[j] == a[i]) count++;
}
if (count > maxCount)
{
maxCount = count;
maxValue = aListOfDoubles[i];
}
}
return maxValue;
}
}
জাভাতে কোনও অ্যারে যুক্ত করার এটি একটি সহজ উপায়। আমি আমার আসল অ্যারে সঞ্চয় করতে একটি দ্বিতীয় অ্যারে ব্যবহার করেছি এবং তারপরে এটিতে আরও একটি উপাদান যুক্ত করেছি। এর পরে আমি সেই অ্যারেটিকে মূল আসলটিতে দিয়েছি।
int [] test = {12,22,33};
int [] test2= new int[test.length+1];
int m=5;int mz=0;
for ( int test3: test)
{
test2[mz]=test3; mz++;
}
test2[mz++]=m;
test=test2;
for ( int test3: test)
{
System.out.println(test3);
}
জাভাতে অ্যারের আকার নির্ধারিত হয় তবে আপনি এর সূচকটি এবং লুপের জন্য একটি নির্দিষ্ট আকারের অ্যারেগুলিকে গতিশীলভাবে উপাদান যুক্ত করতে পারেন। নীচে উদাহরণ খুঁজে করুন।
package simplejava;
import java.util.Arrays;
/**
*
* @author sashant
*/
public class SimpleJava {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
try{
String[] transactions;
transactions = new String[10];
for(int i = 0; i < transactions.length; i++){
transactions[i] = "transaction - "+Integer.toString(i);
}
System.out.println(Arrays.toString(transactions));
}catch(Exception exc){
System.out.println(exc.getMessage());
System.out.println(Arrays.toString(exc.getStackTrace()));
}
}
}