利用映射算子打印菱形

文章目录

一、利用RDD完成

(一)右半菱形

scala 复制代码
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)
  • 执行代码,查看结果

(二)左半菱形

scala 复制代码
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)
  • 执行代码,查看结果

(三)完整菱形

scala 复制代码
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值
scala 复制代码
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完成

  • 导入所需类

(一)右半菱形

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)
  • 执行代码,查看结果

(二)左半菱形

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(21 - i) + "*".repeat(i)).collect(Collectors.toList()).forEach(System.out::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((21 - i) / 2) + "*".repeat(i)).collect(Collectors.toList()).forEach(System.out::println)
  • 执行代码,查看结果

(四)输出任意大菱形

  • 由用户确定n
java 复制代码
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完成

(一)右半菱形

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)
  • 执行代码,查看结果

(二)左半菱形

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(i => " " * (21 - i ) + "*" * i)
list1.foreach(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(i => " " * ((21 - i ) / 2) + "*" * i)
list1.foreach(println)
  • 执行代码,查看结果

(四)输出任意大菱形

  • 由用户确定n
scala 复制代码
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(_))
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值,然后生成一个包含奇数和偶数的列表,接着根据列表中的元素生成一个字符串列表,并打印出结果。
相关推荐
是小李呀~10 分钟前
【工作梳理】怎么把f12里面的东西导入到postman
java
攀小黑10 分钟前
Java 多线程加锁 synchronized 关键字 字符串当做key
java·开发语言
余华余华24 分钟前
2024年蓝桥杯Java B组省赛真题超详解析-分布式队列
java·职场和发展·蓝桥杯
破罐子不摔27 分钟前
【C#使用S7.NET库读取和写入西门子PLC变量】
java·c#·.net
可爱的霸王龙38 分钟前
JVM——模型分析、回收机制
java·jvm
神秘的t39 分钟前
javaSE————网络原理
java·网络
hongweihao41 分钟前
啥?有分布式锁都还能被突破
java·后端
BeerBear42 分钟前
记一次Kill <Pid> Java进程无法退出的问题处理
java·后端·spring
Seven971 小时前
【Guava】IO工具
java
独行soc1 小时前
2025年渗透测试面试题总结-某腾某讯-技术安全实习生升级(题目+回答)
java·python·安全·web安全·面试·职场和发展·红蓝攻防