Java笔记13:统计文件中每个字符出现的次数
一、代码实现
- import java.io.*;
- import java.util.*;
- /**
- 功能:统计文件中每个字符出现的次数
- 思路:
- 1.定义字符读取(缓冲)流
- 2.循环读取文件里的字符,用一个String类型变量接收(newValue)
- 3.把newValue变成字符数组 char[] ch = newValue.toCharArray();
- 4.遍历ch,将ch中所有的字符存入一个Map集合中(TreeSet),键对应字符,值对应字符出现的次数
- 5.遍历打印map集合中的键和值,也就是字符出现的次数
- **/
- public class Stat {
- public static void main(String[] args) {
- long startTime = System.currentTimeMillis();
- stat(new File("e:\\input.txt"));
- long endTime = System.currentTimeMillis();
- System.out.println("\n运行时间:" + (endTime - startTime) + "毫秒");
- }
- public static void stat(File file){
- BufferedReader bfr = null; //定义字符读取(缓冲)流
- try{
- bfr = new BufferedReader(new FileReader(file)); //给该流赋值
- String value = null; //定义一个临时接收文件中的字符串变量
- String newValue = ""; //接收文件中所有字符串的变量
- while((value = bfr.readLine()) != null){ //开始读取文件中的字符
- newValue = newValue + value; //存入newValue变量中
- }
- char[] ch = newValue.toCharArray(); //把newValue变成字符数组
- TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>(); //定义一个TreeMap,默认从小到大顺序,键对应字符,值对应字符出现的次数
- for(int x = 0;x < ch.length; x++){ //遍历ch,将ch中所有的字符存入一个Map集合中(TreeSet),键对应字符,值对应字符出现的次数
- char c = ch[x];
- if(tm.containsKey(c)){ //如果TreeMap(tm)中有该键,则取出该键中的值,也就是出现的次数
- int count = tm.get(c);
- tm.put(c, count + 1); //把新值存入tm集合中,如果键相同的话, 新键会替换老键,值也随着变化了
- }
- else{
- tm.put(c, 1); //如果没有出现该键就说明是第一次出现,存入1次
- }
- }
- //下面的是取出TreeMap(tm)中的键和值
- Set<Map.Entry<Character, Integer>> set = tm.entrySet();
- Iterator<Map.Entry<Character, Integer>> iter = set.iterator();
- while(iter.hasNext()){
- Map.Entry<Character, Integer> map = iter.next();
- char k = map.getKey();
- int v = map.getValue();
- System.out.print(k + "(" + v + "次) ");
- }
- }
- catch(IOException e){
- System.out.println("文件读取错误");
- }
- finally{
- try{
- if(bfr!=null)
- bfr.close();
- }
- catch(IOException e){
- System.out.println("文件关闭错误");
- }
- }
- }
- }
二、测试结果
1 在E:\input.txt中输入两行数据:
Hello World!
您好世界!
运行结果为:
(1次) !(1次) H(1次) W(1次) d(1次) e(1次) l(3次) o(2次) r(1次) 世(1次) 好(1次) 您(1次) 界(1次) !(1次) ,(1次)
运行时间:1毫秒
注:上面第1个没显示出来的字符是空格。
2 在E:\inut.txt中多放些数据,比如放了1.2M的数据,运行时间是3秒。
这里可以看出,这个算法仅仅是实现了最基本需求,当文件很大时,需要很长的时间才能得出结果。如果是在真实项目里,需要提高此算法的效率,或改用其它思路来实现。
Java笔记13:统计文件中每个字符出现的次数的更多相关文章
- Java基础知识强化之集合框架笔记61:Map集合之统计字符串中每个字符出现的次数的案例
1. 首先我们看看统计字符串中每个字符出现的次数的案例图解: 2. 代码实现: (1)需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5) ...
- 统计一个文件中出现字符'a'的次数
# -*- coding: utf-8 -*- #python 27 #xiaodeng #统计一个文件中出现字符'a'的次数 #http://www.cnblogs.com/hongten/p/ho ...
- 使用Map,统计字符串中每个字符出现的次数
package seday13; import java.util.HashMap; import java.util.Map; /** * @author xingsir * 统计字符串中每个字符出 ...
- 统计字符串中每个字符出现的次数(Python)
#统计字符串中每个字符出现的次数 以The quick brown fox jumps over the lazy dog为例 message='The quick brown fox jumps o ...
- Java 13天基础 06天map集合小练习(黑马程序员) 统计字符串中每个字符出现的次数 (经典面试题)
import java.util.HashMap; import java.util.Map; import java.util.Scanner; /** * 目标 : 输出一个字符串中每个字符出现的 ...
- Java中统计字符串中各个字符出现的次数
import java.util.Iterator; import java.util.Set; import java.util.TreeMap; public class TreeMapDemo ...
- linux命令统计文件中某个字符串出现的次数
1.使用grep linux grep命令在我的随笔linux分类里有过简单的介绍,这里就只简单的介绍下使用grep命令统计某个文件这某个字符串出现的次数,首先介绍grep命令的几个参数,详细参数请自 ...
- javascript 统计字符串中每个字符出现的次数
var str = "abdcadfasfdbadfafdasdfasyweroweurowqrewqrwqrebwqrewqrejwq;;"; // console.log(nu ...
- 使用grep查找文件中指定字符出现的次数
grep -o ‘好' 文件名.txt | wc -l -o 指示grep显示所有匹配的地方,并且每一个匹配单独一行输出.这样只要统计输出的行数就可以知道这个字符出现的次数了.
随机推荐
- python安装numpy和scipy的资源
whl资源:注意python版本和位数. http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
- JSON优缺点
总结: 1.占带宽小(格式是压缩的) 2. js通过eval()进行Json读取(便于客户端读取) 3. JSON支持多种语言(c.c++.PHP等),便于服务端解析 JSON (JavaScript ...
- 走进 Prism for Xamarin.Forms
一.使用环境 OS:Win 10 16273 VS:VS2017- 15.3.4 Xamarin:4.6.3.4,nuget:2.4 Android Emulator:Visual Studio fo ...
- 前端读者 | 前端构建工具Gulp
@羯瑞 整理 前言 前端工具现在层出不穷,网上搜下一大片,就看你怎么去使用了,基于项目看用什么样的构建工具.有的工具提供的功能还是非常强大的. FIS.百度团队的产品.现在百度的多个产品中使用.面向前 ...
- react native android 应用状态(前端或后台)的判断
当Android应用程序被暂时放到了后台,或者又重新回到前台,是否有相应的事件可以处理到? 例如,当你的应用暂时放到了后台,是否应该做出一些操作,暂时保存界面上的数据? 可以参考:https://gi ...
- 【Bzoj3527】【Luogu3338】[Zjoi2014]力(FFT)
题面 Bzoj Luogu 题解 先来颓柿子 $$ F_i=\sum_{j<i}\frac{q_iq_j}{(i-j)^2}-\sum_{j>i}\frac{q_iq_j}{(i-j)^2 ...
- BZOJ 4873 寿司餐厅(最大权闭合图 网络流)
寿司餐厅 时间限制: 1 Sec 内存限制: 512 MB提交: 6 解决: 3[提交][状态][讨论版] 题目描述 Kiana 最近喜欢到一家非常美味的寿司餐厅用餐.每天晚上,这家餐厅都会按顺序 ...
- [Nescafé41]编码病毒(循环卷积)
题意看起来好麻烦实际上很简单,首先4s可以先bitset暴力一下,听说卡卡就能过:$O(2^{22}+n^2/32)$ #include<cstdio> #include<bitse ...
- HDU 6035 Colorful Tree (树形DP)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6035 [题目大意] 给出一颗树,一条路径的价值为其上点权的种类数,求路径总价值 [题解] 我们计算 ...
- [SRM478]RandomApple
题意:有$k$种苹果和$n$个箱子,每个箱子中有一些苹果,先等概率选取$n$个箱子组成集合的非空子集,再从选出的苹果中随机选一个,问每种苹果被选中的概率是多少 设箱子$i$有$cnt_{i,j}$个第 ...