java处理中计算ArrayList中字符串的出现次数

java处理中计算ArrayList中字符串的出现次数,java,processing,Java,Processing,您好,我目前正在使用处理和学习java,我的代码基本上是通过ArrayList找到出现最多的单词并将其输出到控制台,我的代码如下: import java.util.Arrays; ArrayList<String> words = new ArrayList(); int[] occurrence = new int[2000]; void setup() { size(800,480); smooth(); String[] data = loadStrings("dat

您好,我目前正在使用处理和学习java,我的代码基本上是通过ArrayList找到出现最多的单词并将其输出到控制台,我的代码如下:

import java.util.Arrays;

ArrayList<String> words = new ArrayList();


int[] occurrence = new int[2000];
void setup() {
size(800,480);
smooth();

String[] data = loadStrings("data/data.txt"); 
    Arrays.sort(data);

for (int i = 0; i < data.length; i ++ ) {
   words.add(data[i]); 
   words.add(data[j]);   //Put each word into the words ArrayList
   }
for(int i =0; i<data.length; i++) {
    occurrence[i] =0;
    for(int j=i+1; j<data.length; j++) {
   if(data[i].equals(data[j])) {
     occurrence[i] = occurrence[i]+1;
   }
 }
}
int max = 0;
String most_talked ="";
   for(int i =0;i<data.length;i++) {
if(occurrence[i]>max) {
  max = occurrence[i];
  most_talked = data[i];
 }
 }

println("The most talked keyword is " + most_talked + " occuring " + max + " times.");
导入java.util.array;
ArrayList words=新的ArrayList();
int[]出现次数=新int[2000];
无效设置(){
尺寸(800480);
光滑的();
String[]data=loadStrings(“data/data.txt”);
数组。排序(数据);
对于(int i=0;i对于(int i=0;i我想到的第一件事是将使用过的单词保存在一个辅助数组中,然后对于每个被查询的单词,在这个列表中找到它

如果匹配,则为该单词增加一个计数器(如果数量过多,您也可以添加一个int[]来存储出现次数),然后只显示它(每个辅助[index]和出现次数[index])

并且每个事件都出现在“int list”中:对于Tom index=0, 狗=1,鱼=3

希望它能帮助你!

看起来从番石榴图书馆来的内容非常适合这项工作。你可以将你读到的所有单词存储到
多集
中,当你想获得出现次数(计数)时,你只需迭代
多集返回的副本。copyHighestCountFirst(myMultiset)

import com.google.common.collect.*;
...
//数据包含文本文件中的单词
Multiset myMultiset=ImmutableMultiset.copyOf(数据);
for(字符串字:Multisets.copyHighestCountFirst(myMultiset.elementSet()){
System.out.println(word+“:“+myMultiset.count(word));
}

这应该就可以了。

问题是,我从一个包含1000多个单词的.txt文件中提取单词,我希望使用hashmap来实现这一点?嗯,我也是新来的,我会尽我所能提供帮助。我会按照我告诉你的方式来完成。如果你担心“单词使用数组”的大小您可以将默认值设置为size,然后,如果它溢出,则创建一个容量更大的副本。对不起,我做得再好不过了。不,我真的很感激:)您知道我如何导入多集的使用吗?我添加了import语句,但更重要的是,您需要下载(使用“guava-18.0.jar”链接)并将其放在类路径中。非常感谢您现在将尝试:)我被抛出一个错误“无法从immutableMultiset转换为Multiset。我仅使用Multiset.of重试,但它将返回(String[]的函数)不exist@Nebbyyy请记住,使用Java库将无法通过Processing.js作为JavaScript进行部署,这可能是部署Processing的最佳方式。这可能对您并不重要,但需要记住。
Example: (Only a scheme)
If the list is:

Tom Tom Dog fish

Then:

Aux[0] = Tom;
Aux[1] = Dog;
Aux[3] = fish;
import com.google.common.collect.*;
...

// data contains the words from the text file
Multiset<String> myMultiset = ImmutableMultiset.copyOf(data);

for (String word : Multisets.copyHighestCountFirst(myMultiset).elementSet()) {
    System.out.println(word + ": " + myMultiset.count(word));
}