Java利用Map实现计算文本中字符个数

目录
  • 一、题目要求
  • 二、分析
  • 三、部分代码展示
  • 四、全部代码
  • 五、结果截图(部分)
  • 六、a.txt文本

一、题目要求

有一个英文的文本文档a.txt , 需要读取该文本文档并计算文档中英文字符出现的次数,最后打印输出

注意:map集合只能放入英文字符,不能够有空格数字引号等字符,所以在写代码的时候需要额外的进行判断,还需要考虑的一点是英文字符是有大小写的,但是统计在map里面就不区分大小写

二、分析

1、需要先获取文档的路径,并创建HashMap作为存放次数的容器,key的类型为Character存放字符,value的类型为Integer存放次数

2、通过文档输入流读取文档中的内容,得到一串字符串

3、遍历字符串,获得字符串中每一个字符

4、判断字符在map集合中是否存在

5、不存在则将其放入

6、存在则将map集合中字符key对应的次数value取出,然后加一,再通过put方法重新放回,起到更新次数的效果

三、部分代码展示

1、创建Map列表及文件路径

FileInputStream fis = null;
HashMap<Character, Integer> map = new HashMap<>();

2、获得文本中的内容并返回为字符串

while ((len = fis.read(b))!=-1){
// 获得文件中的字符串
      s = new String(b, 0, len);
}

3、遍历字符串并获得每个字符再进行相关判断后放入map集合中

// 遍历字符串得到每一个字符
 for (int i = 0; i < s.length() ; i++) {
     char c = s.charAt(i);
     // 判断是否是字母
     if ( ((c>='a')&&(c<='z')) || ((c>='A')&&(c<='Z'))){
     // 将字母转换为小写
     char nc = Character.toLowerCase(c);
    // 判断map集合中是否有该键
     if (map.containsKey(nc)){
     Integer num = map.get(nc);
     num++;
     map.put(nc,num);
  }else {
     map.put(nc,1);
    }
  }

  }

4、遍历map集合得到数据

// 遍历map集合得到数据
Set<Character> key = map.keySet();
  for (Character c : key) {
  Integer value = map.get(c);
  System.out.println("key="+c+"----"+"value="+value);
}

四、全部代码

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class totalNum {
    public static void main(String[] args) throws IOException {
        // todo 统计字母出现的次数
        FileInputStream fis = null;
        String s = null;
        HashMap<Character, Integer> map = new HashMap<>();
        try {
            fis = new FileInputStream("E:\\JavaCode\\JavaSE\\Day8-25\\src\\a1\\a.txt");
            byte[] b = new byte[1024];
            int len = 0;

            while ((len = fis.read(b))!=-1){
                // 获得文件中的字符串
                 s = new String(b, 0, len);
            }

            // 遍历字符串得到每一个字符
            for (int i = 0; i < s.length() ; i++) {
                char c = s.charAt(i);
                // 判断是否是字母
                if ( ((c>='a')&&(c<='z')) || ((c>='A')&&(c<='Z'))){
                    // 将字母转换为小写
                    char nc = Character.toLowerCase(c);
                    // 判断map集合中是否有该键
                    if (map.containsKey(nc)){
                        Integer num = map.get(nc);
                        num++;
                        map.put(nc,num);
                    }else {
                        map.put(nc,1);
                    }
                }

            }

            // 遍历map集合得到数据
            Set<Character> key = map.keySet();
            for (Character c : key) {
                Integer value = map.get(c);
                System.out.println("key="+c+"----"+"value="+value);
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            fis.close();
        }
    }
}

五、结果截图(部分)

六、a.txt文本

I am happy to join with you. today in what will go down in history ,as the greatest demonstration for freedom in the history of our nation…
Five score years ago, a great American, in whose symbolic shadow we stand today, signed the Emancipation Proclamation. This momentous decree came as a great beacon light of hope to millions of Negro slaves who had been seared in the flames of withering injustice. It came as a joyous daybreak to end the long night of bad captivity.

到此这篇关于Java利用Map实现计算文本中字符个数的文章就介绍到这了,更多相关Java计算文本字符个数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java计算给定字符串中出现次数最多的字母和该字母出现次数的方法

    本文实例讲述了java计算给定字符串中出现次数最多的字母和该字母出现次数的方法.分享给大家供大家参考,具体如下: import Java.util.Collections; import java.util.Map; import java.util.TreeMap; public class TestStringSplict { public static void main(String[] args){ String str = "aaaaaaacccccccccccccccccccccc

  • java文本处理之计算文本句子数

    本文实例为大家分享了java计算文本句子数的具体代码,供大家参考,具体内容如下 1.任务简介 本节任务是计算文本中的句子数,并且对于句子数的划分标准为"." "!"和"?"三种符号. 2.基本任务和代码 1)具体思路 (1)首先需要使用InputStreamReader类和BufferedReader类实现文本的读取,由于我使用的文本文档均为utf-8编码,所以还需要指定编码格式为utf-8: (2)然后需要定义一个空的字符串变量,在对文本逐行读

  • Java利用Map实现计算文本中字符个数

    目录 一.题目要求 二.分析 三.部分代码展示 四.全部代码 五.结果截图(部分) 六.a.txt文本 一.题目要求 有一个英文的文本文档a.txt , 需要读取该文本文档并计算文档中英文字符出现的次数,最后打印输出 注意:map集合只能放入英文字符,不能够有空格数字引号等字符,所以在写代码的时候需要额外的进行判断,还需要考虑的一点是英文字符是有大小写的,但是统计在map里面就不区分大小写 二.分析 1.需要先获取文档的路径,并创建HashMap作为存放次数的容器,key的类型为Characte

  • JS限制Textarea文本域字符个数的具体实现

    复制代码 代码如下: <head>       <title>JS限制Textarea文本域字符个数</title>       <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />       <SCRIPT LANGUAGE="JavaScript">       <!--//      

  • c++统计文件中字符个数代码汇总

    我们先来看看下面的代码: #include<iostream> #include<fstream> #include<cstdlib> using namespace std; class CntCharacters { private: int cnt; public: CntCharacters():cnt(0){} ~CntCharacters(){} void opentxt(char* p) { ifstream fin; fin.open(p,ios_bas

  • Java利用opencv实现用字符展示视频或图片的方法

    背景:前段时间看到有人将图片转成符号,感觉挺有意思的,就结合了一下opencv. 代码如下: package org.fxd.utils; import org.opencv.core.Mat; import org.opencv.imgproc.Imgproc; import org.opencv.videoio.VideoCapture; import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import

  • Java C++ 算法leetcode828统计子串中唯一字符乘法原理

    目录 题目要求 思路:模拟 java C++ Rust 题目要求 思路:模拟 解题的核心思想在于逆向思维,不考虑每个子数组中的唯一字符个数,转而考虑每个字符可以作为多少个子数组的唯一字符: 所以在计算答案时的算式和示例中给出的是不一样的: 在计算每个字符“贡献”[即当前向左向右分别可组成的答案个数]的时候要用到乘法原理. 对每一个字符s[i]s[i]s[i]都记录其左边和右边的第一个相同字符位置,分别记为l[i]l[i]l[i]和r[i]r[i]r[i],这两个位置中间构成的就是s[i]s[i]

  • 详解Java中字符流与字节流的区别

    本文为大家分析了Java中字符流与字节流的区别,供大家参考,具体内容如下 1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个"流动的方向",通常可以从中读入一个字节序列的对象被称为输入流:能够向其写入一个字节序列的对象被称为输出流. 2. 字节流 Java中的字节流处理的最基本单位为单个字节,它通常用来处理二进制数据.Java中最基本的两个字节流类是InputStream和Out

  • 使用java从乱码文本中解析出正确的文本

    这是一个可以从乱码文本中得到正确的原始文本的程序,其基于的原理在于错误的编码往往导致位补充,因此正确的文本使用的字节数应该是最少的(之一). 复制代码 代码如下: package com.hongyuan.test; import java.io.UnsupportedEncodingException; /* * 这是一个可以从乱码文本中得到正确的原始文本的程序,其基于的原理在于错误的编码往往导致位补充, * 因此正确的文本使用的字节数应该是最少的(之一). *  * 如果你在测试此程序时,无

  • C语言中字符的输入输出以及计算字符个数的方法详解

    C语言字符输入与输出 标准库提供的输入/输出模型非常简单.无论文本从何处输入,输出到何处,其输入/输出都是按照字符流的方式处理.文本流是由多行字符构成的字符序列,而每行字符则由 0 个或多个字符组成,行末是一个换行符.标准库负责使每个输入/输出流都能够遵守这一模型.使用标准库的 C 语言程序员不必关心在程序之外这些行是如何表示的. 标准库提供了一次读/写一个字符的函数,其中最简单的是 getchar 和 putchar 两个函数.每次调用时,getchar 函数从文本流中读入下一个输入字符,并将

  • Java计算文本MD5加密值的方法示例

    本文实例讲述了Java计算文本MD5加密值的方法.分享给大家供大家参考,具体如下: java计算文本MD5值,用于加密 import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class GetMd5 { public static void main(String[] args) { String a="123"; System.out.println(getM

随机推荐