पर आधारित 2 डी इंटीजर सरणी को सॉर्ट करना मेरे पास 2 डी-सरणी है जिसे मैं दूसरे कॉलम के आधार पर सॉर्ट करना चाहता हूं। पहला कॉलम दूसरे कॉलम के साथ जोड़ा जाना चाहिए।कॉलम
0 10
1 9
2 9
3 9
4 15
5 10
6 4
7 8
8 11
9 12
मैं चाहता हूँ ऊपर 2 डी सरणी इस तरह क्रमबद्ध करना: के रूप में (2x10 मैट्रिक्स) इस प्रकार
2 डी सरणी शुरू में है
4 15
9 12
8 11
0 10
5 10
1 9
2 9
3 9
7 8
6 4
अब, मैं कोशिश की है इस कोड में Sort a two dimensional array based on one column: से जवाब अनुकूल
Arrays.sort(theArray, new Comparator<Integer[]>()
{
@Override
public int compare(Integer[] int1, Integer[] int2)
{
Integer numOfKeys1 = int1[1];
Integer numOfKeys2 = int2[1];
return numOfKeys1.compareTo(numOfKeys2);
}
});
हालांकि, यह सरणी सॉर्ट करने के लिए प्रतीत नहीं होता बिलकुल। सॉर्ट() फ़ंक्शन को कॉल करने के बाद सरणी को प्रिंट करते समय सरणी प्रारंभिक क्रम में होती है।
मैंने यहां से जवाब को अपनाने का भी प्रयास किया: sorting 2D array of String in java लेकिन मुझे एक ही समस्या का सामना करना पड़ा।
क्या मैंने इन समाधानों को अपनाने के दौरान कुछ घातक गलती की है, या मेरा कोड काम करना चाहिए?
इसके अलावा, मैं इस सरणी को अवरोही क्रम में क्रमबद्ध करने के बारे में कैसे जाउंगा? क्या मैं इस पंक्ति के साथ तुलना() में वापसी विवरण को प्रतिस्थापित करूंगा?
return -numOfKeys2.compareTo(numOfKeys1);
किसी भी मदद की सराहना की जाएगी। धन्यवाद!
संपादित करें: यह देखने के लिए कि क्या समस्या कहीं और है, बस मेरे बाकी कोड पोस्ट कर रहा है।
public void Sort()
{
Integer[][] theArray = {{0,10},{1,9},{2,9},{3,9},{4,15},{5,10},{6,4},{7,8},{8,11},{9,12}};;
dump(theArray);
Arrays.sort(theArray, new Comparator<Integer[]>()
{
@Override
public int compare(Integer[] int1, Integer[] int2)
{
Integer numOfKeys1 = int1[1];
Integer numOfKeys2 = int2[1];
return numOfKeys1.compareTo(numOfKeys2);
}
});
System.out.println("====");
dump(theArray);
}
public void dump(Integer[][] array)
{
for(int p = 0, q = 10; p < q; p++)
{
System.out.println(array[p][0] + " " + array[p][1]);
}
}
संपादित करें 2:
मैं काम कर रहा यह मिल गया है। आपकी मदद के लिए सभी को शुक्रिया। मेरे पास एकाधिक सॉर्ट() फ़ंक्शंस (एक पुराना व्यक्ति जो काम नहीं कर रहा था, और जिसे आप ऊपर देखते हैं) था, और यह पता चला कि मैं गलत कह रहा था, भले ही मैंने सोचा कि मैंने कॉल बदल दिया है। उन दिनों में से सिर्फ एक।
यदि आप किसी सरणी को सॉर्ट करना चाहते हैं तो ऊपर दिए गए कोड का उपयोग करने के लिए स्वतंत्र महसूस करें। यह अब पूरी तरह से काम कर रहा है।
वह कोड नहीं चलना चाहिए; सरणी की सरणी में एक एकल सरणी होती है जिसमें दो तत्व तत्वों के समूह होते हैं, जब आप इसे प्रिंट करते हैं तो आप इसे दो दस-तत्व सरणी के सरणी के रूप में देख रहे हैं। –
आप सही हैं, मैं अपने सूचकांक मिश्रित कर रहा था। मुझे सही करने के लिए धन्यवाद। और आपकी मदद के लिए धन्यवाद। – Drake