如何从1 M文件集中收集唯一的单词及其频率?

时间:2016-12-06 05:22:15

标签: java delimiter large-files

我只是试图解决这个问题,但在这里和那里杂耍。

import java.io.*;
import java.util.*;

public class file{
  public static void main(String[] args) throws Exception { 
    Scanner in = new Scanner(System.in);
    Scanner sc=null;
    int count=0,uwords=0;
    File folder = new File("<folder path>");// The collection of files
    File[] listOfFiles = folder.listFiles();
    HashMap<String,Integer> words_fre = new HashMap<String,Integer>();

    FileWriter fw = new FileWriter("abc.txt");
    //ArrayList<String> words = new ArrayList<String>();

for (File file : listOfFiles) {

    if (file.isFile()) {
        //System.out.println(file.getName());
     try{
      sc=new Scanner(/*new BufferedReader(new File*/(file));
       //sc.useDelimiter("\\W");


       while(sc.hasNext()){
        String s = sc.next().toString();
                     s = s.replaceAll("\\<.*?>","");

                     count++; // words count   
                     if(words_fre.containsKey(s))  
                          {  
                               int a = words_fre.get(s);  
                               words_fre.put(s,a+1);             
                          }  
                     else {  
                          words_fre.put(s,1);  
                          uwords++; // unique words count   
                        }

           }

      Object[] key =   words_fre.keySet().toArray();   
          Arrays.sort(key);  
          for (int i = 0; i < key.length; i++) {  
          //System.out.println(key[i]+"= "+words_fre.get(key[i]));
          fw.write(key[i]+" : "+words_fre.get(key[i]) +"\n"); 
        }


       }catch(IOException e)  
          {  
                System.out.println(e);  
           }

  }     

  }
           /*System.out.println("Total Words = "+count);  
           System.out.println("Unique Words = "+words_fre.size());*/

           fw.write("Total Words = "+count+"\n"); 
           fw.write("Unique Words = "+words_fre.size());          
         fw.close();
 }
} 

所以基本上我的输出就像那样   例如。-     : 3 16800 : 1 23-12-2010 : 1 7 : 1 6 : 2 8वीं : 2 अंशु : 1 अधिकतर : 2 अन्य : 1 अपने : 1 हो। : 1 ॥ : 1
: 3

 我还需要删除括号中的第一个条目[:3]和后一个[||:1]和最后一个[:3]

1 个答案:

答案 0 :(得分:0)

可能在你的拉动和推动之间,其他人推动了一些变化。要找到它,您可以将本地提交与远程提交进行比较。如果你的拉动后有任何新的提交/推送,并且在你的本地丢失它,那将是问题的根本原因。您可以在github上找到该提交的来源。可以使用以下命令。

首先使用命令git branch -r

找到我们的确切远程名称

git log master --oneline获取本地提交列表

git log --oneline remote_name/master获取远程提交列表

提供在本地缺少的附加提交列表:

git rev-list remote_name /master ^$(git rev-list master --all)