计算字符串的频率

Mac*_*Iam 2 java arrays string return

我基本上想要搜索字符串的频率.例如,如果我传入单词"I",那么下一句中单词的频率:" 去了海滩,看到三个人"应该是2.我已经构建了这样的方法一个文本(任意长度),由白色空格将其分割成一个数组,并循环遍历数组,搜索每个索引是否与单词匹配.然后,我递增频率计数器并将数字作为字符串返回.这是方法:

private int freq() {
String text = "I went to the beach and I saw three people";
String search = "I";
String[] splitter = text.split("\\s+");
int counter = 0;
   for (int i=0; i<splitter.length; i++)
   {
       if (splitter[i]==search) 
       {
           counter++;
       }
       else
       {

       }
   }
   return counter;
       }

}  
Run Code Online (Sandbox Code Playgroud)

这不在方法之外:

String final = Integer.toString(freq());
System.out.println(final);
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个时,我的结果就是0.我不知道我做错了什么.

编辑:你们都是对的!多么浪费一个问题:(.

gti*_*333 6

equals而不是==

if (text[i].equals(search) )
   {
       counter++;
   }
Run Code Online (Sandbox Code Playgroud)

更好的解决

使用地图以Map<String,Integer> 频率映射单词.

String [] words = line.split(" ");

Map<String,Integer> frequency = new HashMap<String,Integer>();

for (String word:words){

    Integer f = frequency.get(word);
    //checking null
    if(f==null) f=0;
    frequency.put(word,f+1);
}
Run Code Online (Sandbox Code Playgroud)

然后你可以找到一个特定的单词:

frequency.get(word)
Run Code Online (Sandbox Code Playgroud)