当前位置: 首页 > news >正文

利用映射算子打印菱形

文章目录

  • 一、利用RDD完成
    • (一)右半菱形
    • (二)左半菱形
    • (三)完整菱形
    • (四)输出任意大菱形
  • 二、利用Java完成
    • (一)右半菱形
    • (二)左半菱形
    • (三)完整菱形
    • (四)输出任意大菱形
  • 三、利用Scala完成
    • (一)右半菱形
    • (二)左半菱形
    • (三)完整菱形
    • (四)输出任意大菱形
  • 四、实战总结
    • (一)利用RDD完成
    • (二)利用Java完成
    • (三)利用Scala完成

一、利用RDD完成

(一)右半菱形

val rdd = sc.makeRDD(List(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1))
val rdd1 = rdd.map("*" * _)
rdd1.collect.foreach(println)
  • 执行代码,查看结果
    在这里插入图片描述

(二)左半菱形

val rdd = sc.makeRDD(List(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1))
val rdd1 = rdd.map(i => " " * (21 - i) + "*" * i)
rdd1.collect.foreach(println)
  • 执行代码,查看结果
    在这里插入图片描述

(三)完整菱形

val rdd = sc.makeRDD(List(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1))
val rdd1 = rdd.map(i => " " * ((21 - i) / 2) + "*" * i)
rdd1.collect.foreach(println)

在这里插入图片描述

(四)输出任意大菱形

  • 由用户确定n值
import scala.collection.mutable.ListBuffer
val list = new ListBuffer[Int]()
val n = 51
(1 to n by 2).foreach(list.append(_))
(n - 2 to 1 by -2).foreach(list.append(_))
val rdd = sc.makeRDD(list)
val rdd1 = rdd.map(i => " " * ((n - i) / 2) + "*" * i)
rdd1.collect.foreach(println)
  • 执行代码,查看结果
    在这里插入图片描述

二、利用Java完成

  • 导入所需类
    在这里插入图片描述

(一)右半菱形

List<Integer> data = Arrays.asList(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1);
data ==> [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1]
data.stream().map(i -> "*".repeat(i)).collect(Collectors.toList()).forEach(System.out::println)
  • 执行代码,查看结果
    在这里插入图片描述

(二)左半菱形

List<Integer> data = Arrays.asList(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1);
data ==> [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1]
data.stream().map(i -> " ".repeat(21 - i) + "*".repeat(i)).collect(Collectors.toList()).forEach(System.out::println)
  • 执行代码,查看结果
    在这里插入图片描述

(三)完整菱形

List<Integer> data = Arrays.asList(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1);
data ==> [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1]
data.stream().map(i -> " ".repeat((21 - i) / 2) + "*".repeat(i)).collect(Collectors.toList()).forEach(System.out::println)
  • 执行代码,查看结果
    在这里插入图片描述

(四)输出任意大菱形

  • 由用户确定n
List<Integer> list = new ArrayList<>();
int n = 51;
for (int i = 1; i <= n; i += 2) list.add(i);
for (int i = n - 2; i >= 1; i -= 2) list.add(i);
list.stream().map(i -> " ".repeat((n - i) / 2) + "*".repeat(i)).collect(Collectors.toList()).forEach(System.out::println)
  • 执行代码,查看结果
    在这里插入图片描述

三、利用Scala完成

(一)右半菱形

val list = List(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1)
val list1 = list.map("*" * _)
list1.foreach(println)
  • 执行代码,查看结果
    在这里插入图片描述

(二)左半菱形

val list = List(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1)
val list1 = list.map(i => " " * (21 - i ) + "*" * i)
list1.foreach(println)
  • 执行代码,查看结果
    在这里插入图片描述

(三)完整菱形

val list = List(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1)
val list1 = list.map(i => " " * ((21 - i ) / 2) + "*" * i)
list1.foreach(println)
  • 执行代码,查看结果
    在这里插入图片描述

(四)输出任意大菱形

  • 由用户确定n
import scala.collection.mutable.ListBufferval list = new ListBuffer[Int]()
val n = 51
(1 to n by 2).foreach(list.append(_))
(n - 2 to 1 by -2).foreach(list.append(_))
list.map(i => " " * ((n - i) / 2) + "*" * i).foreach(println)
  • 执行代码,查看结果
    在这里插入图片描述

四、实战总结

  • 在本次实战中,我们分别使用了RDD、Java和Scala三种方式来生成菱形图案。

(一)利用RDD完成

  1. 右半菱形:首先创建一个包含奇数的列表,然后使用map函数将每个元素转换为对应数量的*字符,最后打印出结果。
  2. 左半菱形:与右半菱形类似,只是在转换时增加了空格字符,使图案向左对齐。
  3. 完整菱形:结合了左右半菱形的方法,根据元素的位置添加不同数量的空格和*字符。
  4. 输出任意大菱形:由用户确定n值,然后生成一个包含奇数和偶数的列表,接着根据列表中的元素生成一个字符串列表,并打印出结果。

(二)利用Java完成

  1. 右半菱形:与RDD方法类似,只是使用了Java的Stream API进行操作。
  2. 左半菱形:与RDD方法类似,只是在转换时增加了空格字符,使图案向左对齐。
  3. 完整菱形:结合了左右半菱形的方法,根据元素的位置添加不同数量的空格和*字符。
  4. 输出任意大菱形:由用户确定n值,然后生成一个包含奇数和偶数的列表,接着根据列表中的元素生成一个字符串列表,并打印出结果。

(三)利用Scala完成

  1. 右半菱形:与RDD方法类似,只是使用了Scala的List进行操作。
  2. 左半菱形:与RDD方法类似,只是在转换时增加了空格字符,使图案向左对齐。
  3. 完整菱形:结合了左右半菱形的方法,根据元素的位置添加不同数量的空格和*字符。
  4. 输出任意大菱形:由用户确定n值,然后生成一个包含奇数和偶数的列表,接着根据列表中的元素生成一个字符串列表,并打印出结果。
http://www.lryc.cn/news/361846.html

相关文章:

  • 亚信安全正式推出5G专网安全测试服务 圆满完成核电客户5G项目落地
  • 第二十五章CSS中的技巧(导航栏、下拉列表)
  • 大话设计模式解读01-简单工厂模式
  • 35python数据分析numpy基础之setdiff1d求两个数组的差集
  • JVM 指针压缩
  • 时序预测 | Matlab灰色-马尔科夫预测
  • 代码界的奥斯卡:SpringBoot测试的艺术与科学
  • 安防监控视频平台LntonCVS视频监控汇聚平台遏制校园暴力保护校园学生安全应用方案
  • Python | 平均绩点
  • 2024年有什么值得入手的5G长期套餐大流量卡推荐?大流量手机卡入手指南(超4款正规手机卡实测总结)
  • 《尚上优选》项目Bug记录
  • Flutter 中的 PopupMenuTheme 小部件:全面指南
  • uni-app的网络请求库封装及使用(同时支持微信小程序)
  • 力扣524. 通过删除字母匹配到字典里最长单词
  • 【代码随想录】【算法训练营】【第27天】 [39]组合总和 [40] 组合总和II [131]分割回文串
  • 解决 git 命令 Problem with the SSL CA cert (path? access rights?)
  • 详解:重庆耶非凡的选品师项目有哪些优势?
  • DSP28335模块配置模板系列——GPIO配置模板
  • 【SringBoot项目中MyBatis-Plus多数据源应用实践】
  • Android 图表开发开源库 MPAndroidChart 使用总结
  • 手机号脱敏
  • java基础篇(1)
  • 2022年全国职业院校技能大赛高职组“信息安全管理与评估”赛项第三阶段任务书
  • 微信小程序蓝牙连接部分Android14调用wx.setBLEMTU协商低功耗最大传输单元失败解决方案(部分安卓14设置超过23就会报错)
  • PDF格式分析(八十二)——电影注释(movie)
  • Opentracing 代码Demo
  • 笔记93:关于 C++ 中的 Eigen 库
  • 【微服务】部署mysql集群,主从复制,读写分离
  • 【Java】设计一个支持敏感数据存储和传输安全的加解密平台
  • iOS AVFoundation 音视频源码分享