如何在java中计算arraylist上的相同令牌
我有这样一个arraylist:如何在java中计算arraylist上的相同令牌,java,arraylist,count,token,word,Java,Arraylist,Count,Token,Word,我有这样一个arraylist: ArrayList<String> hasil = new ArrayList<String>(); hasil.add("saya makan saya"); hasil.add("makan kamu saya"); hasil.add("kamu dimana"); for (int i = 0; i < hasil.size(); i++) { arr = hasil.get(i
ArrayList<String> hasil = new ArrayList<String>();
hasil.add("saya makan saya");
hasil.add("makan kamu saya");
hasil.add("kamu dimana");
for (int i = 0; i < hasil.size(); i++) {
arr = hasil.get(i).split(" ");
for (int j = 0; j < arr.length; j++) {
temp.put(arr[j], 0);
}
}
ArrayList hasil=new ArrayList();
添加(“saya makan saya”);
添加(“makan kamu saya”);
hasil.添加(“kamu dimana”);
我想数一数arraylist上的token。
我想要的输出如下所示:
saya=3,makan=2,kamu=2,dimana=1
我有这样的代码计数:
ArrayList<String> hasil = new ArrayList<String>();
hasil.add("saya makan saya");
hasil.add("makan kamu saya");
hasil.add("kamu dimana");
for (int i = 0; i < hasil.size(); i++) {
arr = hasil.get(i).split(" ");
for (int j = 0; j < arr.length; j++) {
temp.put(arr[j], 0);
}
}
for(int i=0;i
但输出比我有以下几点:
3 , 3 , 2 . 只需计算令牌,而不是相同的令牌。
我已将每个单词的计数存储在Hashmap中。我想检查hashmap中是否存在单词,然后计数++;
我试过编写这样的代码,但还是错了
for (int i = 0; i < arr.length; i++) {
for(Map.Entry<String,Integer> input : temp.entrySet()){
if(input.getKey().contains(arr[i])){
c++;
}
}
System.out.println("" + c);
c=0;
}
for(int i=0;i
有人能帮我吗?
谢谢你ArrayList hasil=new ArrayList();
ArrayList<String> hasil = new ArrayList<String>();
hasil.add("saya makan saya");
hasil.add("makan kamu saya");
hasil.add("kamu dimana");
Map<String, Integer> tokenCount = new HashMap<>();
for (String phrase : hasil) {
String[] tokens = phrase.split(" ");
for (String token : tokens) {
Integer count = tokenCount.get(token);
if (count == null)
count = 0; // first time this token was found
tokenCount.put(token, count+1);
}
}
添加(“saya makan saya”);
添加(“makan kamu saya”);
hasil.添加(“kamu dimana”);
Map tokenCount=new HashMap();
for(字符串短语:hasil){
String[]tokens=phrase.split(“”);
for(字符串标记:标记){
整数计数=tokenCount.get(令牌);
如果(计数=null)
count=0;//第一次找到此令牌时
tokenCount.put(token,count+1);
}
}
这可以通过Java8实现:
Map<String, Integer> counts = hasil.parallelStream()
.flatMap(elm -> Arrays.stream(elm.split(" ")))
.collect(Collectors.toConcurrentMap(w -> w, w -> 1, Integer::sum));
System.out.println(counts);
使用
HashMap
存储每个单词的计数。在for循环中,您可以检查HashMap
中是否已经存在该单词,并增加该单词的计数。否则,将单词放入计数为1
@statefi的HashMap
中,我在HashMap上存储了搜索单词的计数。但是我如何检查hashmap中是否已经存在这个词呢?您不需要在entrySet上循环。您应该只使用map.keySet().contains(arr[i])
来检查您的映射中是否已经存在一个单词(我假设它存储在arr[i]中)。@statefi非常感谢您的帮助:)