scala的几个小程序
2016-07-16 11:53
465 查看
import java.util.function.BiConsumer import scala.io.Source import scala.util.Random /** * Created by fhqplzj on 16-7-16 at 上午10:47. */ object Hammock { val sep = Array.fill(50)('*').mkString var count = 0 def separate: Unit = { println() count += 1 println(s"${sep}example $count$sep") println() } def main(args: Array[String]): Unit = { /** * 过滤所有的偶数 */ separate println((1 to 10).filter(_ % 2 == 0).mkString(" ")) /** * 对序列中所有元素求和 */ separate println((1 to 10).reduce(_ + _)) println((1 to 10).fold(0)(_ + _)) println((1 to 10).sum) /** * 统计单词出现次数 */ separate val s = "hello world hello spark hello hadoop welcome to spark".split(" ") println(s.groupBy(x => x).mapValues(_.length)) /** * 将单词首字母大写 */ separate println(s.map(_.capitalize).mkString("\t")) /** * 最大值,最小值,求和 */ separate val list = List(2, 7, 1, 0, 5, 4) println(list.max) println(list.min) println(list.sum) /** * 读取文件 */ separate val path = "/home/fhqplzj/temp/BeHappy/module2/src/main/scala/Hammock.scala" Source.fromFile(path).getLines().toList.take(10).foreach(println) /** * 并行计算 */ separate println((1 to 100).par.sum) /** * 两个List求点积 */ separate val list1 = List.tabulate(10)(i => Random.nextInt(20)) val list2 = List.tabulate(10)(i => Random.nextInt(20)) println("list1 = " + list1) println("list2 = " + list2) val dotSum = (list1, list2).zipped.map(_ * _).sum println("dotSum = " + dotSum) /** * 读取环境变量 */ separate System.getenv().forEach(new BiConsumer[String, String] { override def accept(t: String, u: String): Unit = println(s"key=$t,value=$u") }) /** * 计算2到1000的所有素数 */ separate def sieve(xs: List[Int]): List[Int] = xs match { case Nil => Nil case x :: xs1 => List(x) ::: sieve(xs1.filter(_ % x != 0)) } val nums = (2 to 1000).toList val primes = sieve(nums) println("primes = " + primes) /** * 快速排序 */ separate def qsort[T](xs: List[T])(implicit ord: Ordering[T]): List[T] = xs match { case Nil => Nil case x :: xs1 => val (left, right) = xs1.partition(ord.lt(_, x)) qsort(left)(ord) ::: List(x) ::: qsort(right)(ord) } println("list1 = " + list1) /** * 升序 */ println(qsort(list1)) /** * 降序 */ println(qsort(list1)(Ordering.Int.reverse)) } }
相关文章推荐
- 随笔-接入微信SDK64位包报错
- 微信jssdk总结
- java开发微信分享到朋友圈功能
- 微信公众平台开发 获取用户基本信息
- 4招教你掌握微信群、Q群的运营方法
- 微信H5开发问题集锦
- android跳转微信指定公众号界面
- Android仿微信SlideView聊天列表滑动删除效果
- 微信公众号开发教程[012]-素材管理
- JS判断是否为微信浏览器
- 微信公众号第三方平台开发笔记--02获取component_verify_ticket
- 微信分享接口配置和调用
- 微信公众号第三方平台开发笔记--01创建第三方平台
- 关于微信,获取应用签名
- 三个方面解决性能问题的基本思路和方法(微信读书-ios-姚海波;整理:Kiwi)
- 关于Zabbix3版本发送微信报警配置
- [置顶] Android开发——免Root监听微信的聊天记录(后台秘密发邮件)
- Android开发——获取微信聊天记录(后台秘密发邮件)
- Android仿ios微信左划条目删除、置顶的实现,代码简洁,更容易理解使用
- iOS开发支付集成之微信支付