久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java8新特性之Stream API詳解

瀏覽:107日期:2022-08-13 15:59:12
一、前言

StreamAPI在Java8版本中使用,關(guān)注的是對(duì)數(shù)據(jù)的篩選、查找、存儲(chǔ)等

它可以做的事情有:過(guò)濾、排序、映射、歸約

二、使用流程

Stream實(shí)例化中間操作(過(guò)濾、排序、映射、規(guī)約)終止操作(匹配查找、歸約、收集)

三、案例演示

public class EmployeeData { public static List<Employee> getEmployees(){ List<Employee> list = new ArrayList<>(); list.add(new Employee(1001, '馬化騰', 34, 6000.38)); list.add(new Employee(1002, '馬云', 12, 9876.12)); list.add(new Employee(1003, '劉強(qiáng)東', 33, 3000.82)); list.add(new Employee(1004, '雷軍', 26, 7657.37)); list.add(new Employee(1005, '李彥宏', 65, 5555.32)); list.add(new Employee(1006, '比爾蓋茨', 42, 9500.43)); list.add(new Employee(1007, '任正非', 26, 4333.32)); list.add(new Employee(1008, '扎克伯格', 35, 2500.32)); return list; } }

package JDK_8;import org.junit.Test;import java.util.Arrays;import java.util.List;import java.util.Optional;import java.util.stream.Collectors;import java.util.stream.Stream;public class StreamAPI { // 方式1:使用集合創(chuàng)建Stream @Test public void test1() {List<Employee> list = EmployeeData.getEmployees();// 返回一個(gè)順序流Stream<Employee> stream = list.stream();// 返回一個(gè)并行流Stream<Employee> employeeStream = list.parallelStream(); } // 方式2:使用數(shù)組創(chuàng)建流對(duì)象 @Test public void test2() {Employee e1 = new Employee(1003, 'WZY', 26, 3000.69);Employee e2 = new Employee(1007, '王紫玉', 25, 8888);Employee[] list2 = new Employee[]{e1, e2};Stream<Employee> stream = Arrays.stream(list2);stream.forEach(System.out::println); } // 通過(guò)Stream.of 創(chuàng)建 @Test public void test3() {Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6);stream.forEach(System.out::println); } // Stream.filter進(jìn)行過(guò)濾 @Test public void test4() {List<Employee> list = EmployeeData.getEmployees();list.stream().filter(employee -> employee.getAge() > 25).forEach(System.out::println); } // 使用StreamAPI篩選 @Test public void test5() {List<Employee> list = EmployeeData.getEmployees();list.add(new Employee(1004, 'wzy', 25, 18888));list.add(new Employee(1004, 'wzy', 25, 18888));list.add(new Employee(1004, 'wzy', 25, 18888));list.add(new Employee(1004, 'wzy', 25, 18888));list.stream().forEach(System.out::println);System.out.println();list.stream().distinct().forEach(System.out::println); } @Test public void test6() {List<String> list = Arrays.asList('a', 'b', 'c');//map(Function<? super T,? extends R> mapper)//返回由給定函數(shù)應(yīng)用于此流的元素的結(jié)果組成的流。list.stream().map(s -> s.toUpperCase()).forEach(System.out::println); } // 使用StreamAPI篩選:工資大于6000的員工 @Test public void test7() {List<Employee> list = EmployeeData.getEmployees();list.stream().filter(s -> s.getSalary() > 6000).forEach(System.out::println); } // StreamAPI映射:map,接收參數(shù),將參數(shù)轉(zhuǎn)換為其他形式的信息; @Test public void test8() {List<Employee> list = EmployeeData.getEmployees();list.stream().map(e -> e.getAge()).forEach(System.out::println); } // StreamAPI排序,sorted幫助實(shí)現(xiàn)Comparable接口進(jìn)行對(duì)象比較 @Test public void test9() {List<Employee> list = EmployeeData.getEmployees();list.stream().sorted((e1, e2) -> { int ageValue = Integer.compare(e1.getAge(), e2.getAge()); if (ageValue != 0) {return ageValue; } else {return Double.compare(e1.getSalary(), e2.getSalary()); }}).forEach(System.out::println); } // StreamAPI匹配:所有元素是否滿足下列條件 @Test public void test10() {List<Employee> list = EmployeeData.getEmployees();boolean allMatch = list.stream().allMatch(e -> e.getSalary() > 5000);System.out.println(allMatch); } // StreamAPI查找:返回第一個(gè)元素 @Test public void test11() {List<Employee> list = EmployeeData.getEmployees();Optional<Employee> first = list.stream().findFirst();System.out.println(first); } // StreamAPI查找:返回薪水?dāng)?shù)最大的員工 @Test public void test12() {List<Employee> list = EmployeeData.getEmployees();Stream<Double> salaryStream = list.stream().map(e -> e.getSalary());Optional<Double> max = salaryStream.max(Double::compare);System.out.println(max); } // StreamAPI查找:薪水最小的員工對(duì)像 @Test public void test13() {List<Employee> list = EmployeeData.getEmployees();Optional<Employee> min = list.stream().min((e1, e2) -> Double.compare(e1.getSalary(), e2.getSalary()));System.out.println(min); } // StreamAPI:歸約 @Test public void test14() {List<Employee> list = EmployeeData.getEmployees();Stream<Double> salaryStream = list.stream().map(e -> e.getSalary());Optional<Double> sum = salaryStream.reduce((s1, s2) -> s1 + s2);System.out.println(sum.get()); } // StreamAPI:收集 @Test public void test15(){List<Employee> list = EmployeeData.getEmployees();List<Employee> employeeList = list.stream().filter(e -> e.getSalary() > 5000).collect(Collectors.toList());for (Employee employee : employeeList) { System.out.println(employee);} }}

到此這篇關(guān)于Java8新特性之StreamAPI詳解的文章就介紹到這了,更多相關(guān)java StreamAPI詳解內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 国产免费高清 | 女同理伦片在线观看禁男之园 | 欧美xxxx片 | wwwjizz日本 | 色综合天天综合网国产成人网 | 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲成人久久久 | 亚洲精品3区| 国产精品美女久久久久久久久久久 | av超碰| av毛片免费看 | 国产日本欧美在线 | 中文字幕精品视频在线观看 | 91尤物网站网红尤物福利 | 九九综合 | 国产日韩亚洲欧美 | 国产精品一区二区在线看 | 国产福利视频 | 在线日本中文字幕 | 精品视频一区二区三区四区 | 国产超碰人人模人人爽人人添 | 日韩久久久一区二区 | 特黄特黄a级毛片免费专区 av网站免费在线观看 | 午夜影院a | 精品国产乱码一区二区三区 | 成人1区 | 久久se精品一区精品二区 | 电影午夜精品一区二区三区 | 欧洲一级毛片 | 亚洲精品视频免费看 | 96久久久久久 | 直接看av的网站 | 成人在线国产 | 妞干网av| 国产aaa毛片 | 亚洲成成品网站 | 中国大陆高清aⅴ毛片 | 免费午夜视频 | 中文字幕免费在线 | 久久国产综合 | 日韩城人网站 |