Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 시퀀스에서 두 번째로 많이 반복되는 단어 찾기

<시간/>

Java에서 시퀀스에서 두 번째로 많이 반복되는 단어를 찾으려면 코드는 다음과 같습니다. -

예시

import java.util.*;
public class Demo{
   static String second_repeated(Vector<String> my_seq){
      HashMap <String, Integer> my_map = new HashMap<String,Integer>(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<Map.Entry<String, Integer>> my_iter = my_map.entrySet().iterator();
      while (my_iter.hasNext()){
         Map.Entry<String, Integer> 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<String, Integer> 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<String> 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라는 클래스에는 해시 맵을 생성하고 해시 맵에서 특정 값의 키를 반환하는 'get' 함수를 재정의하는 'second_repeated' 함수가 포함되어 있습니다. 반복자가 생성되고 후속 요소는 'hasNext' 함수를 사용하여 반복됩니다.

반복자는 단어가 반복된 횟수를 확인하고 가장 많이 반복되는 첫 번째 단어를 찾아서 저장합니다. 다시 수행되는 작업은

두 번째로 많이 반복되는 단어를 지정하십시오. 기본 클래스에는 문자열 배열과 목록이 포함됩니다. 이 문자열 배열도 목록으로 변환됩니다. 이 새 목록에서 'second_repeated' 함수가 호출되고 관련 출력이 콘솔에 표시됩니다.