Scala-单词计数程序、并行计算,文件IO

1、排序

scala> val lst = List(2,3,1,5,7,6,4,9,8)
lst: List[Int] = List(2, 3, 1, 5, 7, 6, 4, 9, 8)

scala> val lst2 = lst.sorted
lst2: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)

scala> lst
res0: List[Int] = List(2, 3, 1, 5, 7, 6, 4, 9, 8)

scala> lst2
res1: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)

 2、分组2、分组

scala> val lst3 = lst2.grouped(5)
lst3: Iterator[List[Int]] = non-empty iterator

scala> lst3
res2: Iterator[List[Int]] = non-empty iterator

//将Iterator转为List
scala> val lst4 = lst3.toList
lst4: List[List[Int]] = List(List(1, 2, 3, 4, 5), List(6, 7, 8, 9))

scala> lst4
res3: List[List[Int]] = List(List(1, 2, 3, 4, 5), List(6, 7, 8, 9))

3、平铺
flattern

scala> val lst5 = lst4.flatten
lst5: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)

scala> lst5
res4: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)

介绍几个日常工作必备的 Scala 集合函数,如转换函数和聚合函数。

1 最大值和最小值

我们先从动作函数开始。

在序列中查找最大或最小值是一个极常见的需求,较常用于面试问题和算法。还记得 Java 中的代码行吗?如下:

int[] arr = {11, 2, 5, 1, 6, 3, 9};
 int to = arr.length - 1; 
int max = arr[0]; 
for (int i = 0; i < to; i++) {
 if (max < arr[i+1])
      max = arr[i+1]; 
} 
System.out.println(max);

问题:怎么在 List 中找到最大/最小值呢?

Scala 推荐了一个很赞的解决方案:

val numbers = Seq(11, 2, 5, 1, 6, 3, 9)   
numbers.max //11  
numbers.min //1

但实际操作的数据更加复杂。下面我们介绍一个更高级的例子,其中包含一个书的序列。

case class Book(title: String, pages: Int) 
  val books = Seq( Book("Future of Scala developers", 85), 
                  Book("Parallel algorithms", 240), 
                  Book("Object Oriented Programming", 130), 
                  Book("Mobile Development", 495) ) 
  //Book(Mobile Development,495) 
  books.maxBy(book => book.pages) 
  //Book(Future of Scala developers,85) 
  books.minBy(book => book.pages)

如上所示,minBy & maxBy 方法解决了复杂数据的问题。你只需选择决定数据最大或最小的属性。

#2 过滤

你过滤过集合吗?比如,筛选价格大于10美元的条目,或挑选年龄在24岁以下员工等,所有这些操作属于过滤。

让我们举例说明:过滤一个数字 List,只获取奇数的元素。

val numbers = Seq(1,2,3,4,5,6,7,8,9,10)
numbers.filter(n => n % 2 == 0)

然后加大难度,我想获取页数大于120页的书。

val books &#
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值