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("序列中重复次数第二多的单词是 : ");

      System.out.println(second_repeated(new Vector<>(my_seq)));

   }

}

输出结果

序列中重复次数第二多的单词是 :

Only

名为Demo的类包含“ second_repeated”函数,该函数创建哈希映射,并覆盖“ get”函数,该函数返回哈希映射中特定值的键。 创建一个迭代器,然后使用“ hasNext”方法迭代后续元素。

迭代器检查单词重复的次数,然后找到并存储重复次数最多的第一个单词。同样,这个动作会给出第二个重复次数最多的单词。主类包含一个字符串数组和一个列表。这个字符串数组也被转换为一个列表。在这个新列表上调用函数second_repeat函数,并在控制台上显示相关的输出。

以上是 Java在映射中查找第二个重复最多的单词 的全部内容, 来源链接: utcz.com/z/317198.html

回到顶部