Java 流的工作原理示例
理解 Java 流的最佳方式是將其想象為一個對象列表,這些對象彼此獨立,一次一個地進入管道。開發者可以控制進入管道的對象數量、在管道內對它們執行的操作以及它們離開管道后的處理方式。
我們可以通過 .stream() 方法從集合中獲取流。例如,假設我們有一個語言下拉列表,并希望使用 For 循環或 Stream API 打印該列表。
流 API 方法的使用
獲取流并打印元素
通過調用集合上的 .stream() 方法,我們可以獲取流。獲取流后,可以調用 [forEach](http://m.dlbhg.com/blog/the-benefits-of-the-collection-api-in-java-8-part-1)() 方法,并傳遞一個操作來處理每個元素。例如,使用 System.out.println 方法打印每個元素的值。
List languages = new ArrayList();
languages.add("Java");
languages.add("Python");
languages.add("JavaScript");
languages.stream().forEach(System.out::println);
使用 filter() 方法過濾流
filter() 方法用于根據特定條件過濾流中的元素。例如,我們可以過濾出以 "E" 開頭的語言:
languages.stream()
.filter(item -> item.startsWith("E"))
.forEach(System.out::println);
在這里,filter() 方法接收一個謂詞(Predicate)作為參數,該謂詞是一個返回布爾值的函數式接口。
使用 sort() 方法排序流
sort() 方法可以對流中的元素進行排序。例如,按字母順序對語言列表進行排序:
languages.stream()
.sorted()
.forEach(System.out::println);
使用 map() 方法映射元素
map() 方法將流中的元素映射為另一個對象。例如,將語言列表中的所有元素轉換為大寫:
languages.stream()
.map(String::toUpperCase)
.forEach(System.out::println);
使用 collect() 方法收集結果
collect() 方法可以將流中的元素收集到一個集合中。例如,創建一個新的大寫語言列表:
List upperCaseLanguages = languages.stream()
.map(String::toUpperCase)
.collect(Collectors.toList());
System.out.println(upperCaseLanguages);
使用 min() 和 max() 方法查找最值
min() 和 max() 方法可以用來查找流中的最小值和最大值。例如,從數字流中獲取最大值:
Optional maxNumber = Stream.of(1, 2, 3, 4, 5)
.max(Comparator.comparing(Integer::valueOf));
maxNumber.ifPresent(System.out::println);
使用 count() 方法統計元素數量
count() 方法可以返回流中元素的數量。例如,統計以 "G" 開頭的語言數量:
long count = languages.stream()
.filter(item -> item.startsWith("G"))
.count();
System.out.println(count);
在 Selenium WebDriver 中使用 Stream API
示例 1:過濾和計數 Web 元素
以下代碼展示了如何使用 Stream API 過濾和計數 Web 元素:
List links = driver.findElements(By.tagName("a"));
long brokenLinksCount = links.stream()
.filter(link -> link.getAttribute("href") == null)
.count();System.out.println("斷開的鏈接數量:" + brokenLinksCount);
示例 2:按排序順序顯示產品
以下代碼展示了如何使用 Stream API 和 XPath 獲取按排序順序顯示的產品標題:
List productItems = driver.findElements(By.xpath("http://h2[@class='product-title']"));
productItems.stream()
.map(WebElement::getText)
.sorted()
.forEach(System.out::println);
流 API 的優勢
操作流水線 :Stream API 通過操作流水線從源(如數據結構、數組、生成器函數或 I/O 通道)傳遞元素。
函數式編程 :流操作是函數式的,操作結果不會修改源數據。例如,過濾操作會生成一個新的流,而不會影響原始集合。
一次性消費 :流中的元素只能被訪問一次。如果需要重新訪問相同的源元素,則必須創建一個新流。
結論
本文介紹了 Java Stream API 的基本用法及其在 Selenium WebDriver 中的應用。通過結合 Lambda 表達式和 Stream API,可以以函數式編程的方式編寫代碼,從而提高代碼的可讀性和簡潔性。此外,Stream API 在處理 Web 元素列表時非常高效,能夠輕松實現數據的過濾、排序和收集。
原文鏈接: https://www.jadeglobal.com/blog/introduction-java-eight-stream-api
熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
免費開始試用 →
3000+提示詞助力AI大模型
和專業工程師共享工作效率翻倍的秘密
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
久久久欧美精品sm网站 |
波多野结衣一区二区三区 |
日韩av中文字幕一区二区 |
国产毛片一区二区 |
在线免费一区三区 |
亚洲人成伊人成综合网小说 |
欧美一区二区三区四区久久 |
青青草国产成人av片免费 |
国产精品亚洲第一 |
一卡二卡三卡日韩欧美 |
欧美日韩视频一区二区 |
日韩国产欧美在线视频 |
亚洲精品在线网站 |
成人性生交大片免费看视频在线
|
色呦呦一区二区三区 |
成人欧美一区二区三区白人 |
欧洲在线/亚洲 |
精久久久久久久久久久 |
亚洲精品你懂的 |
这里是久久伊人 |
成人免费电影视频 |
香蕉加勒比综合久久 |
久久久国产综合精品女国产盗摄 |
色婷婷综合五月 |
久久av中文字幕片 |
亚洲综合成人在线视频 |
精品国产一区二区亚洲人成毛片
|
免费成人在线观看视频 |
精品欧美一区二区久久 |
色噜噜狠狠一区二区三区果冻 |
青青草原综合久久大伊人精品
|
欧美日韩国产一级片 |
国产成人午夜电影网 |
日韩激情一二三区 |
亚洲综合一区二区三区 |
中文字幕国产一区 |
欧美大片拔萝卜 |
欧美美女bb生活片 |
99久久国产综合精品色伊 |
精品在线播放免费 |
久久机这里只有精品 |
亚洲成人av中文 |
亚洲欧美另类在线 |
国产欧美精品一区 |
xvideos.蜜桃一区二区 |
欧美一级二级三级蜜桃 |
91精品欧美综合在线观看最新 |
日本福利一区二区 |
色哟哟国产精品 |
色综合久久精品 |
在线影院国内精品 |
色国产精品一区在线观看 |
色婷婷精品大在线视频 |
欧美亚洲一区三区 |
欧美私模裸体表演在线观看 |
在线亚洲人成电影网站色www |
97se亚洲国产综合自在线不卡 |
成人小视频免费在线观看 |
成人激情动漫在线观看 |
91小宝寻花一区二区三区 |
91在线视频免费91 |
在线观看亚洲一区 |
欧美日韩国产123区 |
制服视频三区第一页精品 |
日韩一区二区免费视频 |
精品国产伦理网 |
国产精品国产三级国产 |
亚洲国产一区二区a毛片 |
日本人妖一区二区 |
国产精品一区二区三区网站 |
成人av片在线观看 |
在线观看免费亚洲 |
555夜色666亚洲国产免 |
国产亚洲精品资源在线26u |
亚洲美女视频在线 |
久久er精品视频 |
91原创在线视频 |
日韩三级高清在线 |
亚洲欧美一区二区不卡 |
三级在线观看一区二区 |
成人av动漫在线 |
欧美一级日韩免费不卡 |
国产精品久久久一本精品
|
精品一区二区三区av |
caoporn国产一区二区 |
88在线观看91蜜桃国自产 |
国产精品久久久久影院老司 |
日韩av成人高清 |
91免费看视频 |
久久综合久久综合亚洲 |
午夜精品福利一区二区三区蜜桃 |
成人午夜精品在线 |
精品乱人伦小说 |
日本不卡不码高清免费观看
|
成人激情免费网站 |
日韩一区二区麻豆国产 |
一区二区三区四区激情 |
国产成人av一区 |
久久久美女毛片 |
精品一区二区三区视频在线观看 |
在线观看一区二区视频 |
日韩一区日韩二区 |
a4yy欧美一区二区三区 |
国产亚洲欧美一区在线观看 |
麻豆精品视频在线观看免费 |
欧美精品在欧美一区二区少妇 |
亚洲人吸女人奶水 |
丰满亚洲少妇av |
日本一区二区三区在线观看 |
久草热8精品视频在线观看 |
7777精品伊人久久久大香线蕉最新版
|
在线观看91精品国产入口 |
一区二区视频在线 |
91年精品国产 |
亚洲国产精品精华液网站 |
欧美伊人久久大香线蕉综合69 |
一区二区在线免费 |
欧美日韩精品一区二区在线播放 |
亚洲一区二区欧美日韩 |
欧美高清www午色夜在线视频 |
日产精品久久久久久久性色 |
日韩午夜三级在线 |
国产高清精品网站 |
亚洲免费在线视频一区 二区 |
色爱区综合激月婷婷 |
亚洲地区一二三色 |
日韩欧美国产综合一区
|
精品综合久久久久久8888 |
久久天堂av综合合色蜜桃网 |
成人美女视频在线看 |
亚洲蜜臀av乱码久久精品 |
欧美年轻男男videosbes |
久久精品999 |
亚洲人成精品久久久久 |
欧美一级一区二区 |
97久久超碰国产精品电影 |
日本一区中文字幕 |
国产精品网站导航 |
7777精品伊人久久久大香线蕉经典版下载
|
日韩在线一二三区 |
国产午夜亚洲精品午夜鲁丝片 |
中文字幕日本乱码精品影院 |
国产综合色视频 |
中文字幕一区视频 |
欧美精品vⅰdeose4hd |
国产成人精品免费视频网站 |
亚洲影院在线观看 |
日本一区二区视频在线 |
91精品国产综合久久香蕉的特点 |
成人毛片老司机大片 |
麻豆精品久久精品色综合 |
一区二区三区在线看 |
中文字幕欧美日韩一区 |
精品福利一二区 |
欧美精品一二三 |
97se亚洲国产综合自在线不卡 |
久久精品99国产精品 |
亚洲成人动漫在线观看 |
一区二区三区中文字幕电影 |
欧美韩日一区二区三区四区 |
日韩欧美在线观看一区二区三区 |
日本高清不卡在线观看 |
99精品视频在线观看 |
精久久久久久久久久久 |
日本强好片久久久久久aaa |
亚洲精品成人天堂一二三 |
国产精品素人一区二区 |
国产亚洲欧美一区在线观看 |
久久日韩粉嫩一区二区三区 |
日韩精品中文字幕一区二区三区
|
亚洲第一会所有码转帖 |
一区二区三区四区在线 |
亚洲欧美日韩一区 |
亚洲欧美日韩小说 |
自拍av一区二区三区 |
亚洲日本护士毛茸茸 |
一区二区三区中文字幕 |
五月天精品一区二区三区 |
天天综合网天天综合色 |
麻豆视频一区二区 |
国内偷窥港台综合视频在线播放 |
精品一区二区三区香蕉蜜桃
|
蜜臀av一级做a爰片久久 |
久久99国产精品免费 |
国产高清成人在线 |
一本一道久久a久久精品 |
91福利在线观看 |
欧美一卡二卡在线 |
欧美大片免费久久精品三p |
国产日韩欧美一区二区三区综合 |
国产精品污网站 |
亚洲国产精品欧美一二99 |
激情综合色丁香一区二区 |
不卡视频一二三四 |
欧美精品aⅴ在线视频 |
国产欧美一区二区三区在线看蜜臀
|
日本一区二区三区dvd视频在线 |
亚洲日本一区二区 |
九九九精品视频 |
欧美日韩国产不卡 |