快學Scala習題解答—第三章 數組相關操作

原文鏈接:http://blog.csdn.net/ivan_pig/article/details/8257365

--------------------------------------------------

4?數組相關操作

4.1?編寫一段代碼,將a設置為一個n個隨機整數的數組,要求隨機數介于0(包含)和n(不包含)之間

random和yield的使用

import scala.collection.mutable.ArrayBuffer
import scala.math.randomdef randomArray(n:Int):Array[Int]={val a = for(i <- 0 until n) yield (random * n).toInta.toArray
}

4.2?編寫一個循環,將整數數組中相鄰的元素置換。例如,Array(1,2,3,4,5)經過置換后變為Array(2,1,4,3,5)

對數組方法的使用

def reorderArray(arr:Array[Int]):Array[Int]={val t = arr.toBufferfor(i <- 0 until (t.length,2) if i + 1 < t.length){val a = t(i)val b = t(i + 1)t.remove(i,2)t.insert(i,b)t.insert(i + 1,a)}t.toArray
}

4.3?重復前一個練習,不過這一次生成一個新的值交換過的數組。用for/yield

def reorderArray(arr:Array[Int]):Array[Int]={val t = arr.toBufferval result = for(i <- 0 until t.length)yield if(i%2==0 && i + 1 < t.length)t(i + 1)else if(i%2==0 && i + 1 >= t.length)t(i)else t(i - 1)result.toArray
}

感覺代碼有點丑也難讀。需要優化。

4.4?給定一個整數數組,產生一個新的數組,包含元數組中的所有正值,以原有順序排列,之后的元素是所有零或負值,以原有順序排列

//使用循環def reorderArray(arr:Array[Int]):Array[Int]={val a = ArrayBuffer[Int]()val b = ArrayBuffer[Int]()arr.foreach(arg => if(arg > 0) a += arg else b += arg)a ++= ba.toArray}
//使用filter
def reorderArray(arr:Array[Int]):Array[Int]={val a = arr.filter(_ > 0).map(1 * _)val b = arr.filter(_ <= 0).map(1 * _)val c = a.toBufferc ++= bc.toArray
}

4.5?如何計算Array[Double]的平均值?

def aveArray(arr:Array[Double]):Double={arr.sum/arr.length
}

4.6?如何重新組織Array[Int]的元素將他們以反序排列?對于ArrayBuffer[Int]你又會怎么做呢?

def reverseArray(arr:Array[Int]):Array[Int]={arr.reverse
}

4.7?編寫一段代碼,產出數組中的所有值,去掉重復項。(提示:查看Scaladoc)

產出數組的代碼就不編寫了。去重只需要調用api即可

def distinctArray(arr:Array[Int]):Array[Int]={val t = arr.toBuffert.distinct.toArray
}

4.8?重新編寫3.4節結尾的示例。收集負值元素的下標,反序,去掉最后一個下標,然后對每個下標調用a.remove(i)。比較這樣做的效率和3.4節中另外兩種方法的效率

性能嘛,自己比較吧!

def removeArray(arr:Array[Int]):Array[Int]={val t = arr.toBufferval idx = ArrayBuffer[Int]()for(i <- 0 until t.length){if(t(i) < 0)idx += i}idx.remove(0)idx.reverseidx.foreach(t.remove(_))t.toArray
}

4.9?創建一個由java.util.TimeZone.getAvailableIDs返回ide時區集合,判斷條件是它們在美洲。去掉"America/"前綴并排序

顯示的都是中文時間,后續的過濾無法操作。只列出所有的時區

val t = for(i <- getAvailableIDs) yieldgetTimeZone(i).getDisplayName()

4.10?引入java.awt.datatransfer.并構建一個類型為SystemFlavorMap類型的對象:

val flavors = SystemFlavorMap.getDefaultFlavorMap().asInstanceOf[SystemFlavorMap] 然后以DataFlavor.imageFlavor為參數調用getNativesForFlavor方法,以Scala緩沖保存返回值。 (為什么用這樣一個晦澀難懂的類?因為在Java標準庫中很難找到使用java.util.List的代碼)

val flavors = SystemFlavorMap.getDefaultFlavorMap().asInstanceOf[SystemFlavorMap]
println(flavors.getNativesForFlavor(DataFlavor.imageFlavor).toArray.toBuffer.mkString(" | ")
Blog URL:http://www.ivanpig.com/blog/?p=461

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538457.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538457.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538457.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

seo自動工具_愛站SEO工具包詳細介紹

愛站SEO工具-seoer的瑞士軍刀&#xff01;這個工具主要是為了方便SEOer查詢一些網站的問題&#xff0c;監控關鍵詞排名收錄等等&#xff0c;新手老手都可以用的工具&#xff0c;更快的讓SEOer上手。相信有很多SEOer都使用過愛站SEO工具包&#xff0c;也有很多新入行的小伙伴可能…

人物三(依芙蒂法)

轉載于:https://www.cnblogs.com/song1900/p/9189921.html

常用Oracle分析函數詳解

原文鏈接&#xff1a;http://www.cnblogs.com/benio/archive/2011/06/01/2066106.html --------------------------------------------------------------------------- 學習步驟&#xff1a; 1. 擁有Oracle EBS demo 環境 或者 PROD 環境 2. copy以下代碼進 PL/SQL 3. 配合解…

XML文件結構和基本語法

XML文件的結構性內容&#xff0c;包括節點關系以及屬性內容等等。元素是組成XML的最基本的單位&#xff0c;它由開始標記&#xff0c;屬性和結束標記組成。就是一個元素的例子&#xff0c;每個元素必須有一個元素名&#xff0c;元素可以若干個屬性以及屬性值。 xml文件和html文…

python表格數據分類聚合_3-python數據分析-pandas高級操作之替換、映射、隨機抽樣、分組、高級數據聚合、數據加載、透視表、交叉表...

3-python數據分析-pandas高級操作之替換、映射、隨機抽樣、分組、高級數據聚合、數據加載、透視表、交叉表替換操作 replace替換操作可以同步作用于Series和DataFrame中單值替換普通替換&#xff1a; 替換所有符合要求的元素:to_replace15,value’e’按列指定單值替換&#xff…

oracle-SQL-case when 改用 DECODE

SELECT CASE FLOOR_LINE_ID WHEN 1 THEN 高鐵 WHEN 2 THEN 高速 WHEN 3 THEN 公路 WHEN 5 THEN 地鐵 ELSE 其他 END AS LINE_NAME, FLOOR_LINE_ID FROM ( SELECT FLOOR(LINE_ID/100) AS FLOOR_LINE_ID FROM DT4_LINE_NAME ) 改…

lcp mysql cluster_Mysql Cluster 非root用戶啟動ndbd節點報錯

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓1.配置文件&#xff0c;如下&#xff1a;[rootcent178 ~]# ls -lart /etc/my.cnf-rw-rw-r-- 1 mysql mysql 3055 Oct 31 17:29 /etc/my.cnf2.集群數據存儲文件夾&#xff0c;如下&#xff1a;[rootcent178 ~]# ls -lart /var/lib/m…

fatal: Could not read from remote repository.的解決辦法

原文地址&#xff1a;http://blog.csdn.net/huahua78/article/details/52330792 --------------------------------------------------------------------------------- 查看遠端地址 git remote –v 查看配置 git config --list git status git add . // 暫存所有的更改git…

python中mako中loop_python中Mako庫實例用法

Mako是一個模板庫。一種嵌入式的語言&#xff0c;能夠實現簡化組件布局以及繼承&#xff0c;主要的用途也是和作用域有關&#xff0c;但是效果是最直接切靈活的&#xff0c;這些都是mako的基本功能&#xff0c;掌握了基礎內容&#xff0c;接下來就是詳細的了解講述&#xff0c;…

springmvc是什么_SpringBoot與SpringMVC的區別是什么?

簡單的來說&#xff1a;SpringMVC和SpringBoot都是Spring家族的重要成員。Spring家族的使命就是為了簡化而生。SpringMVC簡化我們日常Web開發的&#xff0c;后來隨著自身的發展&#xff0c;SpringMVC變得臃腫復雜&#xff0c;而SpringBoot則進一步簡化了SpringMVC開發。SpringM…

git 上傳代碼到碼云

與碼云建立連接教程&#xff1a;http://blog.csdn.net/zengmingen/article/details/76045076 如果完成了上面步驟的&#xff0c;且有了git。上傳項目步驟&#xff1a; 代碼提交 代碼提交一般有五個步驟&#xff1a; 1.查看目前代碼的修改狀態 2.查看代碼修改內容 3.暫存需要提交…

你不知道的js中關于this綁定機制的解析[看完還不懂算我輸]

前言 最近正在看《你不知道的JavaScript》&#xff0c;里面關于this綁定機制的部分講的特別好&#xff0c;很清晰&#xff0c;這部分對我們js的使用也是相當關鍵的&#xff0c;并且這也是一個面試的高頻考點&#xff0c;所以整理一篇文章分享一下這部分的內容&#xff0c;相信看…

visual studio過期登錄不了賬戶_具有最高管理權限賬戶,Windows 7設置Administrator密碼永不過期...

今天介紹操作系統具有最高管理權限的賬戶&#xff0c;Windows 7如何設置Administrator賬戶密碼永不過期。小伙伴們可能不知道&#xff0c;和Windows Vista操作系統一樣&#xff0c;在Windows 7操作系統中是不能預先使用Administrator這個具有最高管理權限的賬戶的。同時也可能不…

Tomcat安裝與環境變量的配置-Linux+windows

原文鏈接&#xff1a;http://jingyan.baidu.com/article/8065f87fcc0f182330249841.html ------------------------------------------------------------ 1&#xff0c;新建變量名&#xff1a;JAVA_HOME&#xff0c;變量值&#xff1a;C:\Program Files\Java\jdk1.7.0 2&…

python如何讀取配置文件獲取url以及hhead_讀取INI配置文件內容(頭文件head)

/************************************************************FileName: getini.h // 文件名稱Author: yuanfen127 // 作者Date: 2005-03-31 // 日期Description: // 描述本文件的內容,功能,內部各部分之間的關系// 以及文本文件與…

cad隱藏圖層命令快捷鍵_cad快捷鍵f是什么命令?cad中f快捷鍵都有哪些?

1. F1 該功能鍵打開AutoCAD幫助窗口。如果用戶遇到此軟件中的任何功能問題,它可以使用戶在線獲得幫助。如果用戶離線工作,而不是按此鍵,則該軟件的所有功能都將以PDF格式打開。 2. F2 該鍵將打開一個彈出屏幕,在底部顯示命令行。該命令對于在屏幕底部看不到命令窗口的用戶很…

angular2或4部署到tomcat中,讓他跑起來

原文地址&#xff1a;http://blog.csdn.net/rotating_windmill/article/details/76768793 ------------------------------------------------------------------------- 首先使用構建命令(npm run build或ng build)打包&#xff0c;打包完成后項目中會出現一個dist的目錄&…

java 高級編程進階_JAVA高級編程之hibernate進階學習

二級緩存hibernate的session緩存在事務級別進行持久化數據的緩存操作。 當然&#xff0c;也有可能分別為每個類(或集合)&#xff0c;配置集群、或 JVM 級別(SessionFactory 級別)的緩存。你甚至可以為之插入一個集群的緩存。注意&#xff0c;緩存永遠不知道其他應用程序對持久化…

SpringMvc+Tomcat+Angular4 部署運行

這次的團隊開發是&#xff0c;前端開發人員和后臺開發人員完全分開開發的。 前端開發采用了Angular4&#xff0c;webstorm 后端開發采用了&#xff1a;springspringmvcmybatis&#xff0c;eclipse --------------------------------------- 最后要整合了。 1、angular項目編…

python爬蟲本科容易找工作嗎_python爬蟲基礎學完了,我真的能找到一份工作嗎?...

1.能不能找到工作我覺得取決于你技術掌握的程度。2.無論在什么領域&#xff0c;只要你技術到家&#xff0c;都不用愁找不到工作。3.多數人問他們轉行能不能找到工作&#xff0c;是想知道這個崗位需要的人多不多&#xff0c;在爬蟲這個領域&#xff0c;從事這方面的人應該也不少…