Java 需要使用字符串标记器计算字符串中单词的频率的帮助吗

Java 需要使用字符串标记器计算字符串中单词的频率的帮助吗,java,string,Java,String,嘿,我正在使用Blue J,我必须使用StringTokenizer方法来查找单词的频率。 我很容易就能做到这一点,但我想不出一种方法来避免打印重复的单词 import java.util.*; class freq_wrd { public static void main() { Scanner ob=new Scanner(System.in); System.out.println("Enter String to read"); String str = o

嘿,我正在使用Blue J,我必须使用StringTokenizer方法来查找单词的频率。 我很容易就能做到这一点,但我想不出一种方法来避免打印重复的单词

import java.util.*;
class freq_wrd
{
 public static void main()
 {   Scanner ob=new Scanner(System.in);
     System.out.println("Enter String to read");
     String str = ob.nextLine();
     int i,j;
     StringTokenizer st = new StringTokenizer(str,"!@#$=-%^&*()_+ |}{][|<>?>,./:';");
     int n = st.countTokens();
     String a[]=new String[n];
     for(i=0;i<n;i++)
     {
        a[i]=st.nextToken();
     }

      for(i=0;i<n;i++)
      { int freq=0;
          for(j=0;j<n;j++)
          {
            if(a[i].equals(a[j]))
            freq+=1;

            }   
            System.out.println(a[i] + " = "+freq);
        }
 }
}
import java.util.*;
类频率
{
公共静态void main()
{Scanner ob=新扫描仪(System.in);
System.out.println(“输入要读取的字符串”);
字符串str=ob.nextLine();
int i,j;
StringTokenizer st=新的StringTokenizer(str,“!@#$=-%^&*()|+|}{][|?>,./:'”;
int n=st.countTokens();
字符串a[]=新字符串[n];

对于(i=0;i字符串标记器类允许您将字符串拆分为标记,但它不能帮助您计算每个单词的频率。例如,要做到这一点,您可以使用
映射
结构来存储
字符串
单词和
整数
频率。在下面的示例中,我使用
树映射
,因为我可以使用单词的字典顺序打印单词和频率

Map<String, Integer> freq = new TreeMap<>();
for (String word : words) {
    int count = freq.containsKey(word) ? freq.get(word) : 0;
    freq.put(word, count + 1);
}
for (String word: freq.keySet()) {
    System.out.println(word + " = "+ freq.get(word));
}
Map freq=new TreeMap();
for(字符串字:字){
int count=freq.containsKey(word)?freq.get(word):0;
频率输出(字,计数+1);
}
for(字符串字:freq.keySet()){
System.out.println(word+“=”+freq.get(word));
}

您必须保留一份唯一的非回收代币的列表或地图。