Lambda-Stream应用
生活随笔
收集整理的這篇文章主要介紹了
Lambda-Stream应用
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
數(shù)據(jù)準(zhǔn)備
?
/**** 英雄類* @author XYuser**/ public class Person {private String firstName,lastName,job,tech;private int age,score;public Person(String firstName, String lastName, String job, String tech, int age, int score) {this.firstName = firstName;this.lastName = lastName;this.job = job;this.tech = tech;this.age = age;this.score = score;}public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}public String getJob() {return job;}public void setJob(String job) {this.job = job;}public String getTech() {return tech;}public void setTech(String tech) {this.tech = tech;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getScore() {return score;}public void setScore(int score) {this.score = score;} } import java.util.ArrayList; import java.util.IntSummaryStatistics; import java.util.List; import java.util.Set; import java.util.function.Consumer; import java.util.function.Predicate; import java.util.stream.Collector; import java.util.stream.Collectors; import java.util.stream.Stream;/**** lambda操作stream的使用* **/ public class StreamStudy {static List<Person> dragonHeros;static List<Person> eagleHeros;static{dragonHeros = new ArrayList<Person>(){{add(new Person("喬峰", "蕭峰", "丐幫幫主", "降龍十八掌", 28, 95));add(new Person("慕容復(fù)", "南慕容", "姑蘇燕子塢個(gè)體", "以彼之道", 26, 90));add(new Person("段延慶", "大理太子", "西夏一品堂", "一陽(yáng)指", 46, 92));add(new Person("鳩摩智", "污那賊禿", "西夏一品堂", "火焰刀", 26, 90));add(new Person("段譽(yù)", "舔勾", "大理皇族", "六脈神劍", 24, 87));add(new Person("丁春秋", "星宿老怪", "星宿海", "化功大法", 64, 88));add(new Person("蘇星河", "聰辯先生", "逍遙派掌門", "珍瓏棋局", 44, 87));add(new Person("王語(yǔ)嫣", "嘴炮", "曼陀羅山莊", "顏值正義", 18, 0));}};eagleHeros = new ArrayList<Person>(){{add(new Person("黃藥師", "東邪", "桃花島主", "彈指神通", 55, 92));add(new Person("郭靖", "金刀駙馬", "襄陽(yáng)", "九陰真經(jīng)", 35, 90));add(new Person("王重陽(yáng)", "重陽(yáng)真人", "全真派", "先天功", 76, 98));add(new Person("歐陽(yáng)鋒", "西毒", "白陀山", "蛤蟆功", 56, 94));add(new Person("洪七公", "九指神丐", "丐幫", "打狗棒", 58, 92));add(new Person("一燈大師", "南帝", "大理", "一陽(yáng)指", 64, 88));add(new Person("金輪法王", "大明輪王", "蒙古國(guó)師", "龍象般若功", 50, 90));add(new Person("黃蓉", "智囊", "桃花島", "桃花落英掌", 30, 77));}};}public static void main(String[] args) {//過(guò)年了,給每位英雄加一歲System.out.println("過(guò)年了,給每位英雄加一歲:");Consumer<Person> ageRaise = e -> e.setAge(e.getAge() + 1);dragonHeros.forEach(ageRaise);System.out.println("所有英雄姓名:");dragonHeros.forEach(hero -> System.out.printf("%s %d;",hero.getFirstName(),hero.getAge()));System.out.println();eagleHeros.forEach(hero -> System.out.printf("%s %s;",hero.getFirstName(),hero.getLastName()));//過(guò)濾器//定義filterPredicate<Person> ageFilter = (p) -> p.getAge() > 26;Predicate<Person> scoreFilter = (p) -> p.getScore() > 90;Predicate<Person> techFilter = (p) -> "桃花島主".equals(p.getJob());Stream<Person> filter = eagleHeros.stream().filter(ageFilter).filter(techFilter).filter(scoreFilter);System.out.println("---------高精英------------");filter.forEach(p -> System.out.printf(p.getFirstName() + "--"));System.out.println(eagleHeros.stream().filter(hero -> hero.getAge() > 35).count());//使用limit 方法dragonHeros.stream().filter(ageFilter).limit(3).forEach(p -> System.out.print(p.getLastName()+";"));System.out.println();//排序List<Person> list = dragonHeros.stream().sorted((p1,p2) -> (p2.getAge() - p1.getAge())).limit(3).collect(Collectors.toList());System.out.println("選三位最年老的英雄去祭祀:");list.forEach(e -> System.out.print(e.getFirstName() + ";"));//取min或者maxPerson person = eagleHeros.stream().min((p1,p2)-> p1.getScore() - p2.getScore()).get();System.out.println(person.getFirstName() +":" + person.getTech());Person person2 = dragonHeros.stream().max((p1,p2) -> p1.getScore() - p2.getScore()).get();System.out.println(person2.getFirstName() +":" + person2.getTech());//collect用法,,將天龍英雄們的絕學(xué)用#連城一串String tech = dragonHeros.stream().map(Person :: getTech).collect(Collectors.joining("#"));System.out.println(tech);Set<String> techSet = eagleHeros.stream().map(Person :: getTech).collect(Collectors.toSet());techSet.forEach((t) -> System.out.print(t + ";"));IntSummaryStatistics intss = eagleHeros.stream().mapToInt((x) -> x.getScore()).summaryStatistics();System.out.println("最大的能力值的英雄:" + intss.getMax());System.out.println("最小的能力值的英雄:" + intss.getMin());System.out.println("所有能力值數(shù)字之和:" + intss.getSum());//并行計(jì)算所有英雄的能力值之和int s = eagleHeros.parallelStream().mapToInt(p -> p.getScore()).sum();System.out.println("所有能力值數(shù)字之和:" + s);} }參考https://blog.csdn.net/sunp_csdn/article/details/55050313
總結(jié)
以上是生活随笔為你收集整理的Lambda-Stream应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: php eclipse aptana,E
- 下一篇: 自然语言处理3 -- 词性标注