在沒有引入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 ...