Java Stream流(基礎篇)

2021-08-25 05:10:58 字數 1844 閱讀 3925

在沒有引入stream流前:

與傳統意義的流比較:

stream流的操作實際是對函式模型進行轉換、設定,集合元素實際上並未被處理。只有stream流的終結方法被執行的時候,集合元素才會根據指定的模型進行操作(lambda表示式的延遲執行)。

集合名.stream();

//arraylist

listlist = new arraylist<>();

streamalscream = list.stream();

//set

setset = new hashset<>();

streamsetscream = set.stream();

mapmap = new hashmap<>();

//獲得key的流

streamkeystream = map.keyset().stream();

//獲得value的流

streamvaluestream = map.values().stream();

//獲得entry的流

stream> entrystream = map.entryset().stream();

stream.of(陣列名)

int array = ;

streamstream = stream.of(array);

注意事項

stream流一旦呼叫終結方法,就會被關閉,不能繼續呼叫方法操作流中的元素!!

如果通過流方法產生新的流,則舊的流就不能繼續操作!!

使用格式:流名.limit(long maxsize);

使用格式:流名.skip(long n);

對映:一一對應

public

static

void

main(string args)

streamstream = stream.of("馬雲","馬化騰","周杰倫");

stream.foreach(system.out::println);//<=>s->system.out.println(s);

public

class

demotest

}public

class

person

public

person(string name)

@override

public string tostring() ";

}/*省略getter&setter*/

}

5.1.1 收集到list集合

5.1.2 收集到set集合

但返回值是個object,如何解決泛型陣列的問題?

使用lambda和方法引用對toarray進行過載,傳遞乙個intfunction的函式,從而從外面指定泛型引數。

public

class

notes05

}

上述例子均使用序列流(單執行緒執行),stream也可以使用並行流(多執行緒執行)

6.2.1 序列流轉換為併發流

6.2.2 直接獲取併發流資料量不大時,序列流往往更快。因為開執行緒池和配備資源也要時間;

若任務涉及i/o操作且任務間不相互依賴,可以考慮並行化。

java Stream流等操作

jsonobject json jsonobject.parseobject jsonstr parse主要解析字串,當呼叫tostring或者tojsonstring會出現,為null的字段不會被 列印出來在對json迭代的時候,增刪會報concurrentmodificationexceptio...

C OOP篇 檔案流

1.概念 1.檔案流寫入的一般步驟 1.定義乙個寫檔案流 2.定義乙個要寫入的字串 3.完成字串轉byte陣列 4.把位元組陣列寫入指定路徑的檔案 5.關閉檔案流 2.檔案流讀入的一般步驟 1.定義乙個讀檔案流 2.開闢一塊足夠大的位元組陣列記憶體空間 3.把指定檔案的內容讀入位元組陣列 4.完成位...

I O基礎流 緩衝流

io流 字元流 轉換流 以下三句話功能相同 1 inputstreamreader isr new inputstreamreader new fileinputstream a.txt 預設字符集。2 inputstreamreader isr new inputstreamreader new ...