对文件中出现的单词排序次数

package FileRead;
import javax.persistence.criteria.CriteriaBuilder;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.*;

class name{
    String name=new String();
    int num=0;
}
public class FileRead {
    public static void main(String[] args) {
        try {
            FileInputStream fs=new FileInputStream("E:\\1.txt");
            Scanner sc= new Scanner(fs);
            int num=0;
            HashMap<String,Integer> ts=new HashMap<String, Integer>();

LinkedList<name> list =new LinkedList<name>();
            while (sc.hasNext()){
                String s=sc.next();
                if(ts.containsKey(s)){
                    Integer i=ts.get(s)+1;
                    ts.put(s,i);
                }
                else {
                    ts.put(s,1);
                }
                num++;
            }
            System.out.println("开始排序.....");

int i=0;
            int [] nums=new int[num];
            Set<String> keys=ts.keySet();
            for(String key:keys){

nums[i]=ts.get(key);
                name n1=new name();
                n1.num=nums[i];
                n1.name=key;
                list.add(n1);
            }
           Collections.sort(list, new Comparator<name>() {
               @Override
               public int compare(name o1, name o2) {
                   if(o1.num<o2.num){
                       return 1;
                   }
                   else if(o1.num==o2.num){
                       return 0;
                   }
                   return -1;
               }
           });
            for(name n1:list){
                System.out.println(n1.num+":"+n1.name);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

整体思想就是先把文件中的数据全部读出来后,存入一个map中。然后对已经存在的他的出现次数+1,然后接着put进去map中。 最后创建一个链表,里面存储name对象。然后对list进行排序,根据Collections.sort(list,new Coparator<name>(){

public int compare(name n1,name n2){

if(n1.num<n2.num){

return 1;

}else(n1.num==n2.num){

return 0;

}

return -1;

}

})

原文地址:http://blog.51cto.com/ji123/2092761

时间: 2024-08-02 02:20:31

对文件中出现的单词排序次数的相关文章

统计文件中制定词汇出现的次数

统计文件中"牛客"出现的次数: grep -o "查找单词" "查找的文件"| wc -l grep -o "查找单词" "查找的文件": -o 表示精确匹配,没有-o,只会显示要查找单词所出现的那一行 来自为知笔记(Wiz)

统计一个文件中出现字符&#39;a&#39;的次数

# -*- coding: utf-8 -*- #python 27 #xiaodeng #统计一个文件中出现字符'a'的次数 #http://www.cnblogs.com/hongten/p/hongten_python_count.html import os number=0 def getNumber(filePath,c): 'c---->the word numbers' #统计一个文件中出现字符'a'的次数 if os.path.exists(filePath): global

使用IndexOf统计文件中某一词语出现次数

1 #region 统计文件中某一词语出现次数. 2 3 while (true) { 4 Console.WriteLine("请输入要查询的词语:"); 5 string word = Console.ReadLine(); 6 string[] novelArr = File.ReadAllLines("xiyou.txt", Encoding.Default); 7 int count = 0;//计数变量 8 int index = 0;//每行的 初始索

IO流的练习5 —— 读取文件中的字符串,排序后写入另一文件中

需求:已知s.txt文件中有这样的一个字符串:“hcexfgijkamdnoqrzstuvwybpl” 请编写程序读取数据内容,把数据排序后写入ss.txt中. 分析: A:读取文件中的数据 B:把数据存在一个字符串中 C:把字符串转换成字符串数组 D:对字符串数组进行排序 E:数组转换成字符串 F:把字符串写入文件中 1 public static void main(String[] args) throws IOException { 2 // 读取文件中的数据 缓冲字符输入流 3 Buf

华为机试—字符串中找出单词排序

题目: 在给定字符串中找出单词( "单词"由大写字母和小写字母字符构成,其他非字母字符视为单词的间隔,如空格.问号.数字等等:另外单个字母不算单词):找到单词后,按照长度进行降序排序,(排序时如果长度相同,则按出现的顺序进行排列),然后输出到一个新的字符串中:如果某个单词重复出现多次,则只输出一次:如果整个输入的字符串中没有找到单词,请输出空串.输出的单词之间使用一个"空格"隔开,最后一个单词后不加空格. 要求实现函数: void my_word(charinput

替换文件中的相关单词(一)之文件类型为txt

首先说一下具体的实现思路: 第一步:我们需要获取要修改文件的信息,我们可以通过文件的路径来获取文件的FileInputStream,即文件的输入流,然后调用InputStreamReader读取文件输入流信息,将读入的信息保存到BufferedReader(BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而提供字符.数组和行的高效读取.)然后通过readLine()函数将流的信息读取出来,这样就完成了第一步,我们能获取到文件的信息了 第二步:能够读取文件的信息了,我们就可以

linux中统计文件中一个字符串出现的次数

要统计一个字符串出现的次数,这里现提供自己常用两种方法: 1. 使用vim统计 用vim打开目标文件,在命令模式下,输入 :%s/objStr//gn 2. 使用grep: grep -o objStr filename | wc -l 3.如果是多个字符串出现次数,可使用: grep -o ‘objStr1\|objStr2' filename|wc -l #直接用\| 链接起来即可 原文地址:https://www.cnblogs.com/guanbin-529/p/12664039.htm

统计文件中单词的频率,给出前N的单词

package test10; import java.io.*; import java.util.*; import java.util.Map.Entry; public class Frequency { public static int n=0;// public static void main(String[] args) { Scanner sc=new Scanner(System.in); String s; int count=0; int num=1; //作为File

linux-统计一个文件中出现的单词数

#!/bin/bash if [ $# -ne 1 ] then echo "Usage: $0 filename"; exit -1 fi filename=$1 egrep -o "\b[[:alpha:]]+\b" $filename | awk '{ count[$0]++ } END{ printf("%-14s%s\n", "word", "count"); for(ind in count)