kotlin高阶函数开发一个程序,统计文本中字符串出现的个数

2023-11-16

一、高阶函数是Kotlin的核心部分,下面来使用下高阶函数写一个程序

注意:我这里的File使用的是:与src同级的文件,你可以根据自己的需要,修改文件地址
这里写图片描述

代码实例

package net.println.kotlin.chapter5.example

import jdk.nashorn.internal.objects.NativeArray.map
import java.io.File

/**
 * @author:wangdong
 * @description:统计一个文本文件中字符串出现的个数
 */

fun main(args: Array<String>) {
    //定义一个map,char表示文件中的字符,int表示出现的次数
    val map = HashMap<Char,Int>()
    //1.读取一个文件
    //2.toCharArray把它变成字符数组
    //3.filterNot不要空白字符
    //4.forEach统计
    //方式一:
    /*File("build.gradle").readText().toCharArray().filterNot(Char::isWhitespace).forEach{
        val count = map[it]
        //如果这个字符在map中没有,就将字符添加到map,并计数为1
        if (count == null) map[it] = 1
        //如果这个字符在map中存在,就给map中它的数量加1
        else map[it] = count + 1
    }*/

    //方式二:简化版
    //用it分组
    File("build.gradle").readText().toCharArray().filterNot(Char::isWhitespace)
            .groupBy { it }.map {
                it.key to it.value.size
            }.forEach(::println)

    //方式一:把map输出一下
    //map.forEach(::println)
}

输出的结果:方式一和方式二,结果一样,表现现实不一样

(b, 5)
(u, 9)
(i, 43)
(l, 29)
(d, 9)
(s, 22)
(c, 8)
(r, 22)
(p, 22)
(t, 35)
({, 7)
(e, 37)
(x, 1)
(., 16)
......

好啦,结束,欢迎大家一起努力进步!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

kotlin高阶函数开发一个程序,统计文本中字符串出现的个数 的相关文章

随机推荐

  • configtx.yaml中文详解(Hyperledger Fabric 区块链网络运维工具configtxgen的配置文件)

    configtx yaml是Hyperledger Fabric区块链网络运维工具configtxgen用于生成通道创世块或通道交易的配置文件 configtx yaml的内容直接决定了所生成的创世区块的内容 本文将给出configtx y
  • [899]数值特征-对数据进行log变化

    对于一些标签和特征来说 分布不一定符合正态分布 而在实际的运算过程中则需要数据能够符合正态分布 因此我们需要对特征进行log变化 使得数据在一定程度上可以符合正态分布 进行log变化 就是对数据使用np log data 1 加上1的目的是
  • Redis下载部署并加入idea应用(详细笔记)

    文章目录 前言 一 下载Window版本的redis 1 打开网址 github上的redis安装包 https github com microsoftarchive redis 找到Redis on Windows 点击 release
  • java stream流常用方法

    Stream流用法 1 分组 2 过滤 3 List map互转 4 求和 极值 5 求最大 最小值的对象 6 去重 7 排序 8 拼接 9 统计 10 平均值 11 某个值的数量 12 分区 13 截断 14 跳过 15 查找与匹配 16
  • Unity Shader入门精要第四章:Unity Shader 的内置变量(数学篇)

    Unity系列文章目录 文章目录 Unity系列文章目录 前言 一 4 8 1 变换矩阵 二 4 8 2 摄像机和屏幕参数 4 9 答疑解惑 扩展阅读 参考 前言 使用Unity 写Shader 的一个好处在于 它提供了很多内置的参数 这使
  • typora+pandoc:markdown文本转换成word(也可把word转换成markdown哦)

    因为想把自己写的博客转换成word 博客是markdown格式 公式什么的又懒得在word里面敲第二遍 于是就找了个方法让 md文本与 doc文本转换 反之也可把word转换成markdown哦 教程附后 markdown文本转换成word
  • SyntaxError: Cannot use import statement outside a module

    SyntaxError Cannot use import statement outside a module 错误展示 问题 使用 vs code 调试js 代码 出现 SyntaxError Cannot use import sta
  • Maven的从入门到精通(完结篇)

    Maven的从入门到精通 完结篇 一 maven工程运行调试 1 1 端口占用处理 1 2 断点测试 二 总结 2 1 maven仓库 2 2 常用的maven命令 2 3 坐标定义 2 4 pom 基本配置 本文是Maven学习中的完结篇
  • (转载)Flutter、Weex、React Native和Android原生对比报告

    Flutter Weex React Native和Android原生对比报告 Zhang Jun的博客 CSDN博客
  • docker 通过中间镜像加速部署

    概要 实施 修改前的实施时间 制作编译用的镜像 测试修改后的实施时间 概要 使用 docker 打包镜像的时候 每次耗费时间最多的就是 docker build 的过程 特别是对于前端工程的打包 有时候下载依赖包的时间就要 10 几分钟 这
  • MySql数据库实验知识点:

    实验一 创建以下数据库和表 并查看是否成功创建 目的与要求 1 了解 mysql 数据库的存储引擎分类 2 了解表的结构特点 3 了解 mysql 的基本数据类型 4 了解空值概念 5 学会使用 sql 语句创建数据库和表 实验内容 1 实
  • nginx高性能原因

    epoll多路复用 BIO 堵塞式IO 缺点 client和server一旦建立连接 就可以建立通信套接字在这个通信套接字上进行读写操作 此时不能再接收其他客户端连接请求 只能等待同当前连接的客户端的操作执行完成 select模型 缺点 变
  • 第四章 神经网络知识扩展

    1 其他的神经网络学习算法 1 1介绍 梯度下降算法并不是神经网络的唯一算法 还有其他算法 我们喜欢称他们为优化器 Optimizer 优化器就是优化网络的机器 主要有以下几种 1 2SGD优化器 SGD优化器全称为随机梯度下降算法 可以简
  • Java Web 学习笔记 06 Servlet 案例(get、post,转发与重定向)

    Servlet 案例 get post 转发与重定向 案例一 初体验 Servlet web项目 案例二 get 和post 提交流程 编码 1 get和post的区别 乱码问题 2 实例 案例三 转发与重定向 案例一 初体验 Servle
  • Vision Transformer论文精读(2/2)

    目录 一 主题 3 1模型总览图 3 2 微调 二 实验部分 三 回顾总结 四 参考链接 一 主题 在模型的设计上 是尽可能的按照最原始的Transformer来做的 这样的一个好处是我们可以直接把NLP那边已经成功地Transformer
  • 博客园美化

    写在前面 前面的文章中提到过 自己开始在博客园上更新文章 说也奇怪 自己博客园账号注册了好久 都没在上面更新过博客 直到前段时间博客园的求助信息火了 才对博客园有了全新的认知 博客园一个最大的特点就是简洁 干净 广告少 但也有一个个人认为很
  • sqli-less-26-less26a

    less 26 单引号 GET型 这关就有点过滤的意思了 过滤了上一关的东西 并且把空格和 23给过滤了 如果是ubuntu的话 可以用 0a等绕过 方便一些 但我的是windows 所以就只能用 了 让后使用 来代替and 用 1来闭合
  • 树莓派显示器截图方法大全(适用于Linux-C,可扩展开发)

    树莓派显示器截图方法大全 适用于Linux C 可扩展开发 文章目录 树莓派显示器截图方法大全 适用于Linux C 可扩展开发 1 前言 2 shutter 3 scrot 4 raspi2png 5 fb2png 6 最后 1 前言 有
  • Oracle阻塞会话源头查找-单机和RAC环境

    在写 Oracle session相关数据字典 一 这篇文章时 提到使用v session视图的树形查询可以得到Oracle锁树 这样就便于我们找出阻塞会话的源头 但是仅仅可以在单机环境中使用 今天把单机和RAC的阻塞树都整理了一下 话不多
  • kotlin高阶函数开发一个程序,统计文本中字符串出现的个数

    一 高阶函数是Kotlin的核心部分 下面来使用下高阶函数写一个程序 注意 我这里的File使用的是 与src同级的文件 你可以根据自己的需要 修改文件地址 代码实例 package net println kotlin chapter5