1. 程式人生 > >Scala中Stream的應用場景及其實現原理

Scala中Stream的應用場景及其實現原理

假設一個場景

需要在50個隨機數中找到前兩個可以被3整除的數字。

聽起來很簡單,我們可以這樣來寫:

1
2
3
4
5
6
7
8
9
def randomList = (1 to 50).map(_ => Random.nextInt(100)).toList
def isDivisibleBy3(n: Int) = {
  val isDivisible = n % 3 == 0
  println(s"$n $isDivisible")
  isDivisible
}
randomList.filter(isDivisibleBy3).take
(2)

一個產生50個隨機數的函式;

一個檢查某數字是否能被3整除的函式;

最後,對含有50個隨機數的List做filter操作,找到其中所有能夠被3整除的數字,取其中前兩個。

把這段程式碼在Scala的console裡面跑一下,結果是這樣的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
scala> randomList.filter(isDivisibleBy3).take(2)
31 false
71 false
95 false
7 false
38 false
48 true
88 false
52 false
2 false
27 true
90 true
55 false
96 true
91 false
82 false
83 false
8 false
51 true
96 true
27 true
12 true
76 false
17 false
53 false
54 true
70 false
29 false
49 false
12 true
83 false 18 true 6 true 7 false 76 false 51 true 95 false 76 false 85 false 87 true 84 true 44 false 44 false 89 false 84 true 42 true 44 false 0 true 23 false 35 false 55 false res34: List[Int] = List(48,

相關推薦

ScalaStream應用場景及其實現原理

假設一個場景 需要在50個隨機數中找到前兩個可以被3整除的數字。 聽起來很簡單,我們可以這樣來寫: 1 2 3 4 5 6 7 8 9 def randomList = (1 to 50).map(_ =>

etcd: 從應用場景實現原理的全方位解讀

隨著CoreOS和Kubernetes等專案在開源社群日益火熱,它們專案中都用到的etcd元件作為一個高可用強一致性的服務發現儲存倉庫,漸漸為開發人員所關注。在雲端計算時代,如何讓服務快速透明地接入到計算叢集中,如何讓共享配置資訊快速被叢集中的所有機器發現,更為重要的是,如何構建這樣一套高可用、安全、

etcd:從應用場景實現原理的全方位解讀

原文連結 隨著CoreOS和Kubernetes等專案在開源社群日益火熱,它們專案中都用到的etcd元件作為一個高可用強一致性的服務發現儲存倉庫,漸漸為開發人員所關注。在雲端計算時代,如何讓服務快速透明地接入到計算叢集中,如何讓共享配置資訊快速被叢集中的所有機

JavaScript模板引擎的應用場景實現原理

一、應用場景 以下應用場景可以使用模板引擎: 1、如果你有動態ajax請求資料並需要封裝成檢視展現給使用者,想要提高自己的工作效率。 2、如果你是拼串族或者陣列push族,迫切的希望改變現有的書寫方式。 3、如果你在頁面佈局中,存在共性模組和佈局,你可以提取出公共模板,

Java動態代理——框架應用場景和基本原理

## **前言** 之前已經用了5篇文章完整解釋了java動態代理的原理,本文將會為這個系列補上最後一塊拼圖,展示java動態代理的使用方式和應用場景 主要分為以下4個部分 **1.為什麼要使用java動態代理** **2.如何使用java動態代理** **3.框架中java動態代理的應用** *

JAVA集合框架的常用集合及其特點、適用場景實現原理簡介

Java提供的眾多集合類由兩大介面衍生而來:Collection介面和Map介面 Collection介面 Collection介面定義了一個包含一批物件的集合。介面的主要方法包括: size() - 集合內的物件數量add(E)/addAll(Collection) -

Java Collections Framework(JAVA集合框架)的常用集合及其特點、適用場景實現原理簡介

JDK提供了大量優秀的集合實現供開發者使用,合格的程式設計師必須要能夠通過功能場景和效能需求選用最合適的集合,這就要求開發者必須熟悉Java的常用集合類。本文將就Java Collections F

Base64編碼應用場景及其原理

1 Base64編碼 1.1 為什麼要進行base64編碼 base64 最早就是用來郵件傳輸協議中的,原因是郵件傳輸協議只支援 ascii 字元傳遞,因此如果要傳輸二進位制檔案,如:圖片、視訊是無法實現的。因此 base64 就可以用來將二進位制檔案內容編

[轉]淺析 Linux 的時間程式設計和實現原理,第 1 部分: Linux 應用層的時間程式設計

引子 我們都生活在時間中,但卻無法去思考它。什麼是時間呢?似乎這是一個永遠也不能被回答的問題。然而作為一個程式設計師,在工作中,總有那麼幾次我必須思考什麼是時間。比如,需要知道一段程式碼運行了多久;要在 log 檔案中記錄事件發生時的時間戳;再比如需要一個定時器以便能夠定期做某些計算機操作。我發現,在計算機

淺析 Linux 的時間程式設計和實現原理一—— Linux 應用層的時間程式設計

簡介: 本文試圖完整地描述 Linux 系統中 C 語言程式設計中的時間問題。主要內容包括應用程式中的時間程式設計方法;時鐘硬體簡介;Glibc 時間函式的實現以及 Linux 核心對時間的支援和實現原理。這是第 1 部分,探討應用開發中的時間程式設計問題。 引子 我們都

聊一聊 MySQL 的事務及其實現原理

說到資料庫,那就一定會聊到事務,事務也是面試中常問的問題,我們先來一個面試場景: 面試官:"事務的四大特性是什麼?" 我:"ACID,即原子性(Atomicity)、隔離性(Isolation)、永續性(Durability)、一致性(Consistency)!" 面試官:"在 MySQL 資料庫的 Inno

Synchronized及其實現原理

synchronized並發編程中synchronized一直是元老級角色,我們稱之為重量級鎖。主要用在三個地方:1、修飾普通方法,鎖是當前實例對象。2、修飾類方法,鎖是當前類的Class對象。3、修飾代碼塊,鎖是synchronized括號裏面的對象。一、synchronized實現原理當一個線程試圖訪問同

物聯網技術在智能制造應用場景

制造 智能制造 知識庫 歸一化 運行 提前 整體 sso 應用 原文地址 “智能制造”到底是做什麽的?看了這十個場景,就會有所了解了。 1、設備和環境數據的采集--從單點到全局 場景:某工廠的有多品牌、多種類的生產設備需要聯網,並進行實時監控,好麻煩啊…… 傳統制造模式

CodeIntergerhook 應用場景

hook 登錄驗證 用於後臺登錄驗證 post_controller_constructor<?php class Auth { private $CI; private $loginUri = ‘welcome/login‘; private $loginAuth

Java並發編程 Synchronized及其實現原理

.html 隱式 註意 填充 end join() 另一個 ride 實現原理 Synchronized是Java中解決並發問題的一種最常用的方法,也是最簡單的一種方法。Synchronized的作用主要有三個:(1)確保線程互斥的訪問同步代碼(2)保證共享變量的修改能夠及

聊聊keep-alive組件的使用及其實現原理

white pes input clas cto lods num mco tumx 寫在前面 因為對Vue.js很感興趣,而且平時工作的技術棧也是Vue.js,這幾個月花了些時間研究學習了一下Vue.js源碼,並做了總結與輸出。 文章的原地址:https://git

Paxos在大型系統應用場景

mit sensu comm amp 重要性 enc 但是 大型 一個 https://timyang.net/distributed/paxos-scenarios/ 在分布式算法領域,有位非常重要的短發叫Paxos,它的重要性有多高呢?Google的Chubby【1】中

scalaStream理解

求值 nbsp pan stream int cal scala 全部 head // Stream:Stream is lazy List; // Stream惰性求值指它只確定第一個值,後面的值用到再求值,這樣可以防止數據過大全部加載導致內存溢出 // 將

【轉】Java並發編程:Synchronized及其實現原理

st2 等待 OS threads img 參考 使用 leg ble 一、Synchronized的基本使用   Synchronized是Java中解決並發問題的一種最常用的方法,也是最簡單的一種方法。Synchronized的作用主要有三個:(1)確保線程互斥的

Java日誌框架:slf4j作用及其實現原理

sof cat 打開 系統 aging .get matching ade you 簡單回顧門面模式 slf4j是門面模式的典型應用,因此在講slf4j前,我們先簡單回顧一下門面模式, 門面模式,其核心為外部與一個子系統的通信必須通過一個統一的外觀對象進行,使得子系統更易於