激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java8如何構建一個Stream示例詳解

Java8如何構建一個Stream示例詳解

2021-04-20 14:26Ryan.Miao Java教程

Java 8 是迄今為止在語義上改動上最大的一個平臺。下面這篇文章主要給大家介紹了關于Java8如何構建一個Stream的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。

stream初體驗

stream是java8中操作集合的一個重要特性,我們先來看看java里面是怎么定義stream的:

"a sequence of elements supporting sequential and parallel aggregate operations."

我們來解讀一下上面的那句話:

1、stream是元素的集合,這點讓stream看起來用些類似iterator;

2、可以支持順序和并行的對原stream進行匯聚的操作。

stream的創建方式有很多種,除了最常見的集合創建,還有其他幾種方式。

list轉stream

list繼承自collection接口,而collection提供了stream()方法。

?
1
2
list<integer> list = lists.newarraylist(1, 2, 3);
stream<integer> stream = list.stream();

數組轉stream

對于數組,arrays提供了stream()方法。

?
1
2
string[] arr = new string[]{"a", "b", "c"};
stream<string> stream = arrays.stream(arr);

map轉stream

map并不是一個序列,不是集合,沒辦法直接轉成stream(). 但entryset()是set,可以轉

?
1
2
map<string, object> map = maps.newhashmap();
stream<entry<string, object>> stream = map.entryset().stream();

直接創建stream

stream也提供了api直接生成一個stream,這個stream大概可以理解成一個list。因為內部就是數組實現的。

?
1
stream<integer> integerstream = stream.of(1, 2, 3);

讀取文件的stream

用過linux的就會對其命令行的管道符敬佩不已,一個管道符就可以源源不斷的做處理。在java里讀取文件也可以實現類似的功能。

?
1
2
3
4
5
6
7
8
long uniquewords = 0;
try (stream<string> lines = files.lines(paths.get("data.txt"), charset.defaultcharset())) {
 uniquewords = lines.flatmap(l -> arrays.stream(l.split(" ")))
  .distinct()
  .count();
} catch (ioexception e) {
 //
}

通過函數來生成無限流

stream提供了iterate來生成一個無限序列,一個基于初始值的無限序列。可以用lambda設置序列的生成規則,比如每次增加2.

?
1
2
3
stream.iterate(0, n -> n + 2)
  .limit(10)
  .foreach(system.out::println);

再比如,斐波那契數列(fibonacci sequence)

?
1
2
3
4
stream.iterate(new int[]{0, 1}, t -> new int[]{t[1], t[0] + t[1]})
  .limit(20)
  .map(t -> t[0])
  .foreach(system.out::println);

stream還提供了另一個generate方法來生成序列。接收一個用戶指定的生成序列函數intsupplier.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
intsupplier fib = new intsupplier() {
 private int previous = 0;
 private int current = 1;
 
 @override
 public int getasint() {
  int oldprevious = this.previous;
  int nextvalue = this.previous + this.current;
  this.previous = this.current;
  this.current = nextvalue;
  return oldprevious;
 }
};
intstream.generate(fib).limit(10).foreach(system.out::println);

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://www.cnblogs.com/woshimrf/p/Java8-build-stream.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 综合图区亚洲 | 一本色道久久综合狠狠躁篇适合什么人看 | 日本一区二区三区视频在线 | 欧美乱淫 | 一区国产在线观看 | 欧美一级毛片大片免费播放 | 国产精品免费av一区二区三区 | 337p粉嫩大胆噜噜噜亚瑟影院 | 中文字幕免费在线看 | 久久久久久久久91 | 国产精品亚洲欧美 | 欧美一级毛片欧美一级成人毛片 | 日韩一级片一区二区三区 | 精品国产乱码一区二区三区四区 | 色呦呦一区二区三区 | 国产精品久久久久久238 | 久久国产精品久久久久 | 中国av免费在线观看 | 国产呻吟| 国产亚洲欧美一区久久久在 | 亚州成人在线观看 | 国产一国产精品一级毛片 | av在线日韩| 亚洲免费高清 | 国产精品一区自拍 | 亚洲第九十九页 | 欧美人与禽性xxxxx杂性 | 激情视频免费观看 | 日本高清在线播放 | 免费毛片在线 | 中文字幕视频在线播放 | 亚洲视频在线一区二区 | 综合国产在线 | 九九热视频这里只有精品 | 欧美激情第一区 | 嗯哈~不行好大h双性 | 欧美成人a | 成人免费在线播放 | 成人做爽爽爽爽免费国产软件 | 亚洲精品无码不卡在线播放he | www.精品视频 |