আমার জাভাতে পূর্ণসংখ্যার একটি অ্যারে রয়েছে, আমি এর একটি অংশই ব্যবহার করতে চাই। পাইথনে আমি জানি আপনি এই অ্যারের মতো কিছু করতে পারেন [সূচক:] এবং এটি সূচী থেকে অ্যারেটি ফিরিয়ে দেয়। জাভাতে কি এমন কিছু সম্ভব।
আমার জাভাতে পূর্ণসংখ্যার একটি অ্যারে রয়েছে, আমি এর একটি অংশই ব্যবহার করতে চাই। পাইথনে আমি জানি আপনি এই অ্যারের মতো কিছু করতে পারেন [সূচক:] এবং এটি সূচী থেকে অ্যারেটি ফিরিয়ে দেয়। জাভাতে কি এমন কিছু সম্ভব।
উত্তর:
জাভাতে একটি অ্যারের দৈর্ঘ্য অপরিবর্তনীয়। সুতরাং, আপনার পছন্দসই অংশটি একটি নতুন অ্যারে হিসাবে অনুলিপি করা উচিত। Java.util.Arrays বর্গ থেকে পদ্ধতি
ব্যবহার করুন :copyOfRange
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
স্টার্ট ইনডেক্স হ'ল অনুলিপি করা, পরিসীমাটির প্রাথমিক সূচক।
এন্ডআইডেক্স হ'ল অনুলিপি করার জন্য, পরিসীমাটির চূড়ান্ত সূচক। (এই সূচক অ্যারের বাইরে থাকতে পারে)
উদাহরণ:
//index 0 1 2 3 4
int[] arr = {10, 20, 30, 40, 50};
Arrays.copyOfRange(arr, 0, 2); // returns {10, 20}
Arrays.copyOfRange(arr, 1, 4); // returns {20, 30, 40}
Arrays.copyOfRange(arr, 2, arr.length); // returns {30, 40, 50} (length = 5)
endIndex
প্রথম আর্গুমেন্ট হিসাবে অ্যারের আকারের চেয়ে বড় আপনি সরবরাহ করতে পারবেন না । সুতরাং, আপনি যদি একটি সম্পূর্ণ অনুলিপি চান, এই অ্যারে উল্লেখ করে একটি ভেরিয়েবল তৈরি করুন এবং ব্যবহার করুনArrays.copyOfRange(var, 0, var.length)
Arrays.copyOf(var, var.length)
Arrays.copyOfRange(Thread.currentThread().getStackTrace(),1,Short.MAX_VALUE)
ArrayIndexOutOfBoundsException
।
হ্যাঁ, আপনি অ্যারেআস.কপিঅফরেঞ্জ ব্যবহার করতে পারেন
এটি একই জিনিসটি সম্পর্কে রয়েছে (দ্রষ্টব্য একটি অনুলিপি রয়েছে: আপনি প্রাথমিক অ্যারে পরিবর্তন করেন না)।
List
এবং একটি ব্যবহার করতে হবে subList
।
আপনি চেষ্টা করতে পারেন:
System.arraycopy(sourceArray, 0, targetArray, 0, targetArray.length);// copies whole array
// copies elements 1 and 2 from sourceArray to targetArray
System.arraycopy(sourceArray, 1, targetArray, 0, 2);
সিস্টেমের জন্য জাভাদোক দেখুন ।
আপনি যদি জাভা ১.6 বা তার বেশি ব্যবহার করছেন তবে Arrays.copyOfRange
আপনি অ্যারের কোনও অংশ অনুলিপি করতে ব্যবহার করতে পারেন । জাভাডোক থেকে:
নির্দিষ্ট অ্যারের নির্দিষ্ট রেঞ্জটিকে একটি নতুন অ্যারেতে অনুলিপি করে। ব্যাপ্তির প্রাথমিক সূচক (থেকে) অবশ্যই শূন্য এবং সমেতের মধ্যে থাকা উচিত
original.length
। মূল্য এoriginal[from]
কপি (যদি না প্রাথমিক উপাদান মধ্যে স্থাপন করা হয়from == original.length
বাfrom == to
)। মূল অ্যারেতে পরবর্তী উপাদানগুলির মানগুলি অনুলিপিটিতে পরবর্তী উপাদানগুলিতে স্থাপন করা হয়। পরিসীমা (চূড়ান্ত সূচকto
), যা থেকে বড় হওয়া বা এর সমান নয়from
, তার চেয়ে অনেক বেশী হতে পারেoriginal.length
, যা কেসfalse
কপি যার সূচক এর চেয়ে বড় বা সমান সব উপাদানের মধ্যে স্থাপন করা হয়original.length - from
। ফিরে আসা অ্যারের দৈর্ঘ্য হবেto - from
।
এখানে একটি সহজ উদাহরণ :
/**
* @Program that Copies the specified range of the specified array into a new
* array.
* CopyofRange8Array.java
* Author:-RoseIndia Team
* Date:-15-May-2008
*/
import java.util.*;
public class CopyofRange8Array {
public static void main(String[] args) {
//creating a short array
Object T[]={"Rose","India","Net","Limited","Rohini"};
// //Copies the specified short array upto specified range,
Object T1[] = Arrays.copyOfRange(T, 1,5);
for (int i = 0; i < T1.length; i++)
//Displaying the Copied short array upto specified range
System.out.println(T1[i]);
}
}
পরীক্ষা করে দেখুন copyOfRange ; এবং উদাহরণ:
int[] arr2 = Arrays.copyOfRange(arr,0,3);
আপনি এর মতো কিছু ব্যবহার করতে পারেন: Arrays#copyOfRange
আপনি subList(int fromIndex, int toIndex)
আপনার পূর্ণসংখ্যার আরারে পদ্ধতি ব্যবহার করতে পারেন , এরকম কিছু:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> arr = new ArrayList<>();
arr.add(1);
arr.add(2);
arr.add(3);
arr.add(4);
List<Integer> partialArr = arr.subList(1, 3);
// print the subArr
for (Integer i: partialArr)
System.out.println(i + " ");
}
}
আউটপুট হবে: 2 3
।
নোট করুন যে subList(int fromIndex, int toIndex)
পদ্ধতিটি দ্বিতীয় রূপটি প্রাপ্ত (ভ্যার 2 - 1) এর উপর বিয়োগ 1 সম্পাদন করে, আমি ঠিক জানি না কেন, তবে এটি ঘটে যা সম্ভবত অ্যারের আকার অতিক্রম করার সম্ভাবনা হ্রাস করতে পারে।
Arrays.copyOfRange(Thread.currentThread().getStackTrace(),1,255)
255 পরিবর্তে হিসাবে আমি Integer.MAX_VALUE ব্যবহার করতে পারবেন না, যদি আমি বাস্তব দৈর্ঘ্য পেতে চান