java - 如何使用java添加collections.Frequency中的所有值以获取重复单词

标签 java arrays string list text

for(String temp : uniqueSet) {
    if((Collections.frequency(list, temp)) >= 2) {
        System.out.println(temp + "=" + (Collections.frequency(list, temp) -1));
    }
}

我只是想添加我的重复单词数。但我找不到它。

在我的代码片段中,我想从文本文件中获取经常出现的单词。

问题是我可以从文本文件中获取重复单词的值,例如 ram=4 sam = 4 man =2。 现在,

我想添加 4+4+2 并得到总重复字数为 10。

欢迎任何建议。

我是java初学者

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.apache.commons.io.FileUtils;
public class testsrepeatedwords {
    public static void main(String[] args) throws FileNotFoundException, IOException {

    FilenameFilter filter = new FilenameFilter() {
        public boolean accept(File dir, String name) {
            return name.endsWith(".txt");
        }
    };

    File folder = new File("E:\\testfolder\\");
    File[] listOfFiles = folder.listFiles(filter);

    for (int i = 0; i < listOfFiles.length; i++) {
        File file1 = listOfFiles[i];
        try {
            String content = FileUtils.readFileToString(file1);

        } catch (IOException e) {

            e.printStackTrace();
        }

        BufferedReader ins = null;

        try {
            ins = new BufferedReader ( new InputStreamReader(new FileInputStream(file1)));
                } catch (FileNotFoundException e) {       e.printStackTrace();  }

        String message = org.apache.commons.io.IOUtils.toString(ins);
        String[] stringarray = message.split(" "); 
        List<String> list = new ArrayList<String>(Arrays.asList(stringarray));  
        list.removeAll(Arrays.asList("", null));
        Set<String> uniqueSet = new HashSet<String>(list); 
        for (String temp : uniqueSet) { 
                if ( (Collections.frequency(list, temp)  ) >= 2 ){

                    System.out.println(temp+"="+(Collections.frequency(list, temp)  -1)  );             //after subtraction 

                int oc = (Collections.frequency(list, temp)  -1) ;
            //  System.out.println(oc);     
           // System.out.print(oc+" ");


        } 
        }
        }}}

这是我的完整代码。 :)

最佳答案

“uniqueSet”真的是一个集合吗?在集合中元素只出现一次。您应该首先检查您的 uniqueSet 实现。如果这确实是一个 Set,则 Collections.Frequency(list, temp)) >= 2 始终为 false。

关于java - 如何使用java添加collections.Frequency中的所有值以获取重复单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34988771/

相关文章:

C 将数组的大小传递给另一个 C 文件变量

c - 为链表节点中的字符串动态分配内存

java - 单击 GWT 会触发多个单击事件

java - 如何在 Java 中解码 XHTML 和/或 HTML5 实体?

java - 使用 RSA 8.5 的 Websphere 7.0 上的 JPA 2.0 问题

php - 如何检索对象数组值?

java - 检查 Field[] 是否包含名称为 XXX 的字段

c++ - 尝试替换字符串中的字符时发生内存泄漏

c++ - 在 C++ 中对类属性使用字符串数据类型的问题

java - 在 Java 中检索正确的文件 URI