मुझे Arrays.deepEquals (ऑब्जेक्ट [], ऑब्जेक्ट []) के बारे में पता है, लेकिन यह आदिम प्रकारों (एरे और ऑटोबॉक्सिंग की देय सीमाओं के लिए काम नहीं करता है, this related post देखें)।जावा में प्राइमेटिव के दो सरणी की तुलना करें?
यह ध्यान में रखते हुए, यह सबसे कुशल दृष्टिकोण है? मामले
if (a == b)
return true;
यह न केवल "दोनों अशक्त" मामलों पकड़ता, लेकिन यह भी "खुद के लिए एक सरणी की तुलना":
boolean byteArrayEquals(byte[] a, byte[] b) {
if (a == null && b == null)
return true;
if (a == null || b == null)
return false;
if (a.length != b.length)
return false;
for (int i = 0; i < a.length; i++) {
if (a[i] != b[i])
return false;
}
return true;
}
मुझे स्कीट किया गया है! –
मैंने सोचा था कि एक लाइब्रेरी विधि थी, लेकिन ट्विकट ने मुझे बल्ले से गहरे एक्वाल्स() का उल्लेख करके फेंक दिया। Arrays.equals() वास्तव में आपके परिवर्तन के साथ इस विधि को करता है, हालांकि यह अस्थायी चर (लंबाई की तुलना करने से पहले) में एक। लम्बाई भी संग्रहीत करता है। –
धन्यवाद! और मैं इनमें से कुछ जानता था, मुझे याद दिलाने के लिए धन्यवाद ... आदमी ने मुझे आलसी बना दिया है! –