Scala使用接收给定的一行字符串(例:hello-hello,hi,job-hi,...,依次切割英文逗号和“-”,可以得到每个单词); 统计各单词出现的次数。
时间: 2024-09-18 17:13:22 浏览: 8
Scala 中处理这样的字符串并统计单词出现次数,通常会利用其强大的函数式编程特性。你可以使用 `split` 函数将字符串按照指定的分隔符(这里是逗号和破折号)切割成单词列表,然后使用 `groupBy` 和 `count` 函数分别对单词进行分组并计算每个单词出现的次数。以下是使用 Scala 的示例代码:
```scala
import scala.util.Try
import collection.mutable.Map
def countWords(str: String): Map[String, Int] = {
// 使用 Try-catch 装饰以处理可能出现的异常,如空串或无效输入
val words = Try(str.split("\\s*,\\s*|-")).getOrElse(Nil)
// groupBy 将单词按键值(单词本身)分组,count 计算每个组的数量
val wordCounts = words.groupBy(identity).mapValues(_.size)
wordCounts
}
// 示例:
val inputString = "hello-hello,hi,job-hi,hello hi,world"
val wordCountMap = countWords(inputString)
println(wordCountMap) // 输出:Map(hello -> 3, hi -> 2, job -> 1, world -> 1)
相关问题
failed to execute goal org.scala-tool:maven-scala-plugin:2.15.2:compile(scala-compile)
这是一个Maven构建错误,提示无法执行org.scala-tool:maven-scala-plugin:2.15.2:compile(scala-compile)目标。可能是由于Scala插件版本不兼容或配置错误导致的。需要检查Maven配置和Scala插件版本,并尝试解决问题。
通过flink-1.20.0-bin-scala_2.12.tar.gz生成flink镜像
在使用Flink 1.20.0版本的二进制包生成Docker镜像时,你需要结合一个Dockerfile来指导构建过程。以下是基本步骤:
1. **下载Flink二进制包**:首先从Apache Flink官网下载最新的`flink-1.20.0-bin-scala_2.12.tar.gz`文件,并解压到本地项目目录。
2. **创建Dockerfile**:在与Flink包同级的目录下,创建一个新的`Dockerfile`。内容可能类似下面的样子:
```Dockerfile
# 使用官方的Java基础镜像作为父镜像
FROM openjdk:8-jdk-alpine
# 设置作者信息
LABEL maintainer="Your Name <your.email@example.com>"
# 设置工作目录
WORKDIR /app
# 将Flink包复制到镜像中
COPY target/flink-*.tar.gz /app/
# 解压缩Flink包
RUN tar -xzf flink-*.tar.gz && \
rm flink-*.tar.gz
# 指定Flink bin目录作为entrypoint
ENTRYPOINT ["/usr/lib/flink/bin/start-cluster.sh", "--config", "/app/conf"]
# 指定配置目录
VOLUME /app/conf
# 运行Flink
CMD ["start"]
```
3. **构建镜像**:切换到项目目录,然后运行Docker构建命令:
```bash
docker build -t flink:1.20.0 . # 或者自定义镜像名称
```
这将根据Dockerfile创建一个名为`flink:1.20.0`的新镜像。`start-cluster.sh`脚本会启动Flink集群。