scala操作List函式

2021-09-12 21:54:25 字數 1176 閱讀 5216

1.定義反轉函式

def rev[t](xs:list[t])=(list[t]() /:xs)
2.列表排序:

list[t] stor(_<_)
3.列表歸併排序:

原理:首先如果列表長度為零或僅有乙個元素,它就已經排好序的,因此可以不加改變的返回。

長列表可以拆成兩個子列表,每個包含大概一半的原表元素。每個子列表採用堆排序函式的遞迴呼叫完成排序,然後

再歸併操作把產生的兩個排號的序的列表合併在一起。時間複雜度為nlog(n)級別。

scala>:past

def msort[t](less:(t,t)=>boolean)(xs:list[t]):list[t]=

val n=xs.length/2

if(n==0) xs

else

}scala> msort((x:int,y:int)=>xmsort不能正確推斷例項型別,不能這樣寫  msort(_>_)(list)

唯一解決只能時明確把引數型別傳遞給msort,如:

msort[string](_>_)(list("asd","bsfd","fe"))

還有一種是重寫msort方法交換引數順序

//與msort同樣的實現,不過交換了引數順序

現在就以執行型別推斷

通常,一旦有需要推斷多型方法引數型別時,型別推斷就只會參考第乙個引數列表中所有的引數型別,但不會參考之後的其他引數,因為函式時柯里化的方法,帶有兩個引數列表,所以第二個引數(也就是說,那個函式值)將不會用來做決定方法型別引數的參考。

4.建立queue類

//夾在類名與其引數之間的private修飾符表面queue的構造器是私有的,它只能被類本身

//及伴生物件訪問,類名queue仍然是公開的,因此可以繼續使用這個類,但是不能呼叫它的構造器

//為了解決這個問題可以新增用初始元素序列,比較簡潔的做法是建立的工廠方法,做法是定義乙個

class queue[t] private(

private val leading:list[t],

private val trailing:list[t]

) new queue(leading,x::trailing)

}object queue

scala中List的常見操作

參考自 下面是list的常用方法,當然了這不是所有的.但都是最常用的.具體看下面的demo.具體可以看 裡面的注釋 新建空listbuffer並新增元素 返回最後乙個元素 println list.last 在指定的位置 end 開始查詢元素最後出現的位置 println list.lastinde...

Scala 不可變List列表操作

建立空列表 scala val list nil val list collection.immutable.nil.type list scala val list list val list list nothing list 建立帶初始值的列表 scala val list list aa b...

scala 函式高階操作

1 匿名函式 引數 引數型別 函式體 匿名函式沒有名字,使用 val f 引數 引數型別 函式體 def f 引數 引數型別 函式體 2 多行字串與插值 val name bioamin println s user is name val location panjiayuan of beijin...