java - 字符串的计数频率

标签 java arrays string return

我基本上想搜索字符串的频率。例如,如果我传入“我”这个词,那么下面这句话中这个词的频率:“去了海滩,看到了三个人”应该是 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;
       }

}  

这在方法之外:

String final = Integer.toString(freq());
System.out.println(final);

但是当我运行这个时,结果一直是 0。我不知道我做错了什么。

编辑:你们都是对的!真是浪费问题:(。

最佳答案

使用 equals而不是 ==

if (text[i].equals(search) )
   {
       counter++;
   }

更好的解决方案

用一个Map来映射单词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);
}

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

frequency.get(word)

关于java - 字符串的计数频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7830673/

相关文章:

java - 如何在 Windows 10 中彻底删除 NetBeans 及其组件

java - JVM挂起是什么意思?

javascript - 如何从 JS 数组中删除空对象

c - 如何使用C程序检测文件中的特定字符串

python - 在 python 中使用 """.. ."""而不是 "..."或 '...' 有什么用,尤其是在 MySQLdb cursor.execute 中

java - 如何让 Java 中的 Spark 工作 - 无法初始化类 org.apache.spark.util.Utils$

java - 将 Map 转换为内联元素、文本 XML

arrays - 在此 Ruby 快速排序实现中如何构建最终数组?

java - “变量”不能解析为变量

从十六进制字符串解码 Python UCS2