Java में अनुक्रम में दूसरी सबसे अधिक दोहराया गया शब्द खोजने के लिए, कोड निम्नलिखित है:
उदाहरण
import java.util.*; public class Demo{ static String second_repeated(Vector my_seq){ HashMap my_map = new HashMap(my_seq.size()){ @Override public Integer get(Object key){ return containsKey(key) ? super.get(key) : 0; } }; for (int i = 0; i < my_seq.size(); i++) my_map.put(my_seq.get(i), my_map.get(my_seq.get(i))+1); int first_val = Integer.MIN_VALUE; int sec_val = Integer.MIN_VALUE; Iterator> my_iter = my_map.entrySet().iterator(); while (my_iter.hasNext()){ Map.Entry ent = my_iter.next(); int v = ent.getValue(); if(v > first_val){ sec_val = first_val; first_val = v; } else if (v > sec_val && v != first_val) sec_val = v; } my_iter = my_map.entrySet().iterator(); while (my_iter.hasNext()){ Map.Entry ent = my_iter.next(); int v = ent.getValue(); if (v == sec_val) return ent.getKey(); } return null; } public static void main(String[] args){ String arr[] = {"This", "sample", "only", "anything", "sample", "from", "sample","only"}; List my_seq = Arrays.asList(arr); System.out.println("The second most repeated word in the sequence is: "); System.out.println(second_repeated(new Vector<>(my_seq))); } } आउटपुट
The second most repeated word in the sequence is: Only
Demo नामक क्लास में 'second_repeated' फंक्शन है जो एक हैश मैप बनाता है और 'get' फंक्शन को ओवरराइड करता है जो हैश मैप में एक विशिष्ट मान की कुंजी वापस करता है। एक इटरेटर बनाया जाता है, और 'hasNext' फंक्शन का उपयोग करके बाद के एलिमेंट्स पर इटरेट किया जाता है।
इटरेटर जांचता है कि शब्द कितनी बार दोहराए गए थे और सबसे अधिक बार दोहराया गया पहला शब्द मिल जाता है और स्टोर हो जाता है। फिर वही क्रिया की जाती है जो दूसरी सबसे अधिक दोहराया गया शब्द देगी। मुख्य क्लास में एक स्ट्रिंग ऐरे और एक लिस्ट होती है। इस स्ट्रिंग ऐरे को लिस्ट में भी कन्वर्ट किया जाता है। 'second_repeated' फंक्शन को इस नई लिस्ट पर बुलाया जाता है और प्रासंगिक आउटपुट कंसोल पर प्रदर्शित होता है।