java - 2D Array values frequency -


अगर मेरे पास 2 डी सरणी है जो निम्नानुसार व्यवस्थित है:

  स्ट्रिंग X [] [] = नया स्ट्रिंग [] [] {{"127.0.0.9", "60", "75000", "यूडीपी", "अच्छा"}, {"127.0.0.8", "75", "75000", " टीसीपी "," बुरा "}, {" 127.0.0.9 "," 75 "," 70000 "," यूडीपी "," अच्छा "}, {" 127.0.0.1 "," "," 70000 "," यूडीपी " "अच्छा"}, {"127.0.0.1", "75", "75000", "टीसीपी", "बुरा"}};  

मैं प्रत्येक मान की आवृत्ति जानना चाहता हूं .. इसलिए I27.0.0.9 2. 2. मैं इसके लिए सामान्य समाधान कैसे कर सकता हूं? जावा में या किसी भी भाषा के लिए कोई एल्गोरिथ्म?

ऐसा लगता है कि आपको कस्टम डेटा प्रकार की आवश्यकता है ताकि प्रत्येक एक स्ट्रिंग [] [] का उपयोग करने के बजाय पंक्ति, लेकिन अपने प्रश्न का अधिक सीधे जवाब देने के लिए, आप प्रत्येक स्तंभ के लिए उपयोग कर सकते हैं। हैशमपैंट <स्ट्रिंग, पूर्णांक & gt; को इष्टतम समय में ऐसा करने की उम्मीद की जा सकती है।


इस विचार को प्रदर्शित करने के लिए एक स्निपेट है:

 < कोड> आयात करें java.util। *; सार्वजनिक वर्ग आवृत्ति {स्थिर शून्य वृद्धि (नक्शा और लेफ्टिनेंट; स्ट्रिंग, पूर्णांक & gt; मानचित्र, स्ट्रिंग कुंजी) {पूर्णांक संख्या = map.get (कुंजी); Map.put (कुंजी, (गिनती == शून्य? 0: गिनती) + 1); } सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {स्ट्रिंग तालिका [] [] = नई स्ट्रिंग [] [] {{"127.0.0.9", "60", "75000", "यूडीपी", "अच्छा"}, {"127.0.0.8", "75", "75000", "टीसीपी", "बुरा"}, {"127.0.0.9", "75", "70000", "यूडीपी", "अच्छा"}, {" 127.0.0.1 "," "," 70000 "," यूडीपी "," अच्छा "}, {" 127.0.0.1 "," 75 "," 75000 "," टीसीपी "," बैड "}}; अंतिम अंतराल एम = टेबल। लम्बाई; अंतिम इंट एन = टेबल [0]। लम्बाई; सूची के & lt; मानचित्र & LT; स्ट्रिंग, पूर्णांक & gt; & gt; नक्शे = नया अर्रेलिस्ट & lt; मानचित्र & lt; स्ट्रिंग, पूर्णांक & gt; & gt; (); (इंट आई = 0; आई & lt; N; i ++) के लिए {maps.add (नया हैशमैप & lt; स्ट्रिंग, पूर्णांक & gt; ()); } के लिए (स्ट्रिंग [] पंक्ति: तालिका) {के लिए (इंट आई = 0; आई & lt; एन; आई ++) {वेतन वृद्धि (नक्शे। गेट (i), पंक्ति [i]); }} के लिए (मानचित्र & lt; स्ट्रिंग, पूर्णांक & gt; नक्शे: मानचित्र) {System.out.println (मानचित्र); } System.out.println (maps.get (0) .get ("127.0.0.9")); }}  

यह निम्न आउटपुट उत्पन्न करता है: प्रत्येक पंक्ति प्रत्येक कॉलम के लिए एक आवृत्ति नक्शा है:

  {127.0.0.9 = 2, 127.0.0.8 = 1, 127.0.0.1 = 2} {= 1, 60 = 1, 75 = 3} {75000 = 3, 70000 = 2} {UDP = 3, टीसीपी = 2} {अच्छा = 3, खराब = 2} 2   

ध्यान दें: अगर आप एक साथ सभी कॉलमों से मूल्यों को मिलाकर करने की परवाह नहीं करते हैं, तो आपको केवल सूची के बजाय एक सूची & lt; प्रत्येक कॉलम के लिए नक्शा और gt; एक इससे डिजाइन भी बदतर हो जाएगा, यद्यपि। स्ट्रिंग [] []

उदाहरण के लिए, कुछ कॉलम वास्तव में ऐसा दिखते हैं जैसे वे होना चाहिए एक enum

  enum प्रोटोकॉल {UDP, TCP; } Enum शर्त {अच्छा, बुरा; } // ...  

Comments