আমার একটি int
অ্যারে রয়েছে যার কোনও উপাদান নেই এবং আমি এটি খালি কিনা তা যাচাই করার চেষ্টা করছি।
উদাহরণস্বরূপ, নীচের কোডে যদি আই-স্টেটমেন্টের শর্তটি সত্য হয় না কেন?
int[] k = new int[3];
if (k == null) {
System.out.println(k.length);
}
আমার একটি int
অ্যারে রয়েছে যার কোনও উপাদান নেই এবং আমি এটি খালি কিনা তা যাচাই করার চেষ্টা করছি।
উদাহরণস্বরূপ, নীচের কোডে যদি আই-স্টেটমেন্টের শর্তটি সত্য হয় না কেন?
int[] k = new int[3];
if (k == null) {
System.out.println(k.length);
}
উত্তর:
একটি null
অ্যারে এবং খালি অ্যারের মধ্যে একটি মূল পার্থক্য রয়েছে । এটি একটি পরীক্ষা null
।
int arr[] = null;
if (arr == null) {
System.out.println("array is null");
}
এখানে "খালি" এর কোনও অফিসিয়াল অর্থ নেই। আমি 0 টি উপাদান থাকার কারণে খালিটি সংজ্ঞায়িত করতে বেছে নিচ্ছি:
arr = new int[0];
if (arr.length == 0) {
System.out.println("array is empty");
}
"খালি" একটি বিকল্প সংজ্ঞাটি যদি সমস্ত উপাদান থাকে null
:
Object arr[] = new Object[10];
boolean empty = true;
for (int i=0; i<arr.length; i++) {
if (arr[i] != null) {
empty = false;
break;
}
}
অথবা
Object arr[] = new Object[10];
boolean empty = true;
for (Object ob : arr) {
if (ob != null) {
empty = false;
break;
}
}
obj !- null
সম্ভবত সম্ভবত বোঝানো হয়েছেobj != null
null
এটি একটি ভিন্ন ধরণের।
ArrayUtils.isNotEmpty(testArrayName)
প্যাকেজ থেকে org.apache.commons.lang3
অ্যারে নাল বা খালি নয় তা নিশ্চিত করে
এর দৈর্ঘ্য দেখুন:
int[] i = ...;
if (i.length == 0) { } // no elements in the array
যদিও একই সাথে নাল পরীক্ষা করা নিরাপদ:
if (i == null || i.length == 0) { }
আমি। নেট ব্যাকগ্রাউন্ড থেকে এসেছি। তবে জাভা / সি # আরও / কম একই।
আপনি যদি কোনও অ-আদিম ধরণের প্রকার (আপনার ক্ষেত্রে অ্যারে) ইনস্ট্যান্ট করেন তবে তা বাতিল হবে না।
উদাহরণস্বরূপ int[] numbers = new int[3];
, এই ক্ষেত্রে স্থান বরাদ্দ করা হয় এবং প্রতিটি উপাদানের 0 এর একটি ডিফল্ট মান থাকে।
এটা হবে null
, যখন আপনি new
এটি আপ না ।
যেমন
int[] numbers = null; // changed as per @Joachim's suggestion.
if (numbers == null)
{
System.out.println("yes, it is null. Please new it up");
}
numbers
এখনও আরম্ভ করা হয়নি। "একীকরণবিহীন" এবং null
একই জিনিস নয়।
int[] numbers
পরিবর্তিত হয়ে সম্পাদনা করব int[] numbers == null
; সি # তে, এটি ক্ষেত্রে নয়।
কোনও ইনট অ্যারে শূন্য দিয়ে শুরু করা হয় যাতে এটিতে কখনই নাল থাকে না। কেবলমাত্র অবজেক্টের অ্যারেগুলিতে প্রাথমিকভাবে শূন্য থাকবে।
এখানে খুব সরল বিন্দুটি হ'ল ভ্যারিয়েবল k নাল নয় কারণ এটি অ্যারের দিকে নির্দেশ করে। অ্যারে নিজেই খালি আছে তা বিবেচ্য নয়। আপনার পোষ্টের নাল পরীক্ষাটি কেবল তখনই মূল্যায়ণ করবে যদি ভেরিয়েবল কে কোনও বিষয় নির্দেশ না করে।
আমি নীচে হিসাবে পরীক্ষা। আশা করি এটা সাহায্য করবে.
Integer[] integers1 = new Integer[10];
System.out.println(integers1.length); //it has length 10 but it is empty. It is not null array
for (Integer integer : integers1) {
System.out.println(integer); //prints all 0s
}
//But if I manually add 0 to any index, now even though array has all 0s elements
//still it is not empty
// integers1[2] = 0;
for (Integer integer : integers1) {
System.out.println(integer); //Still it prints all 0s but it is not empty
//but that manually added 0 is different
}
//Even we manually add 0, still we need to treat it as null. This is semantic logic.
Integer[] integers2 = new Integer[20];
integers2 = null; //array is nullified
// integers2[3] = null; //If I had int[] -- because it is priitive -- then I can't write this line.
if (integers2 == null) {
System.out.println("null Array");
}
int
উপাদান ছাড়াই একটি অ্যারে অগত্যা নয় null
। এটি কেবল তখনই null
বরাদ্দ করা হয়নি। জাভা অ্যারে সম্পর্কে আরও তথ্যের জন্য এই টিউটোরিয়ালটি দেখুন ।
আপনি অ্যারের দৈর্ঘ্য পরীক্ষা করতে পারেন:
void foo(int[] data)
{
if(data.length == 0)
return;
}
public boolean empty() {
boolean isEmpty = true;
int i = 0;
for (int j = 0; j < array.length; j++) {
if (array[j] != 0) {
i++;
}
}
if (i != 0) {
isEmpty = false;
}
return isEmpty;
}
এটি যতটা কাছাকাছি আমি কোনও int অ্যারে খালি কিনা তা পরীক্ষা করে দেখতে পেলাম। যদিও এটি কাজ করবে না যখন অ্যারের ইনটগুলি আসলে শূন্য হয়। এটি {1,2,3} এর জন্য কাজ করবে এবং এটি এখনও return 2,0} তবে {0 true সত্য ফিরে আসায় মিথ্যা ফিরে আসবে
জাভা 8+ এ আপনি স্ট্রিম অলম্যাচ পদ্ধতির সাহায্যে এটি অর্জন করেছেন।
আদিমতার জন্য:
int[] k = new int[3];
Arrays.stream(k).allMatch(element -> element != 0)
অবজেক্টের জন্য:
Objects[] k = new Objects[3];
Arrays.stream(k).allMatch(Objects::nonNull)