java处理中计算ArrayList中字符串的出现次数
您好,我目前正在使用处理和学习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
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));
}