/ / अलग 2 डी सरणी के भीतर दो Arrays की तुलना - जावा, बराबर, बहुआयामी-सरणी, सरणी

अलग 2 डी सरणी के भीतर दो Arrays की तुलना - जावा, बराबर, बहुआयामी-सरणी, सरणी

मेरे पास दो अलग 2 डी सरणी हैं। प्रत्येक में छोटे सरणी होते हैं जो int मानों के जोड़े होते हैं। पहली 2 डी सरणी इनपुट जानकारी है, अन्य 2 डी सरणी में वे मान होते हैं जिन्हें मिलान या खोजा जाना है।

उदाहरण के लिए, मैं इनपुट सरणी है:

{{0, 1}, {0, 2}, {2, 1}, {1, 0}, {0,1}}

दूसरा, संदर्भ सरणी पहले से मूल्यों के सभी संभावित संयोजन है:

{{0, 0}, {0,1}, {0,2}, {1, 0}, {1, 1}, {1, 2}, {2, 0}, {2, 1}, {2, 2}}

मैं इनपुट लेना चाहता हूं और निर्धारित करना चाहता हूंsubarray मैं किसी भी संदर्भ subarrays के बराबर है। मैं परिणामों को एक आयामी सरणी में संदर्भ के समान आकार में रखना चाहता हूं, इनपुट सरणी में प्रत्येक सबएरे को कितनी बार पाया गया था। तो परिणामस्वरूप सरणी इस तरह दिखनी चाहिए:

{0, 2, 1, 1, 0, 0, 0, 1, 0}

यह कोड पर मेरा प्रयास है:

int[] ResultArray = new int[ReferenceArray.Length];

for (int i = 0; i < ReferenceArray.Length; i++)
{
for (int j = 0; j < InputArray.length; j++)
{
if (InputArray[j] == RefereenceArray[i])
ResultArray[i]++;
}
}

किसी कारण से, यह संकलित करता है लेकिन ResultArray के लिए कुछ भी नहीं जोड़ा जाता है। जब मैंने उपयोग करने की कोशिश की

Arrays.equal(InputArray[j], ReferenceArray[i])

इसके बजाय, मुझे संकलन में त्रुटि मिलती है। कोई विचार क्या गलत हो गया है? मेरे पास कोड का एक समान ब्लॉक था जो ठीक काम करता था, और यह समझ नहीं सकता कि समस्या क्या है।

उत्तर:

उत्तर № 1 के लिए 4

== (एक पर Object प्रकार) हमेशा संदर्भ पहचान का परीक्षण करता है। आप उपयोग कर सकते हैं Arrays.deepEquals(Object[], Object[]) इसे बदलकर

if (InputArray[j] == RefereenceArray[i])

कुछ पसंद है

if (Arrays.deepEquals(InputArray[j], RefereenceArray[i]))