Java8函數式編程
阿新 • • 發佈:2018-01-14
com lam 處理 pos ali map span china 不可
1、什麽是函數式編程?
函數式編程的核心是:在思考問題時,使用不可變值和函數,函數對一個值進行處理,映射成另一個值。
2、Lambda表達式的學習
要點:Lambda表達式是一個匿名方法,將行為像數據一樣傳遞,常見結構如下:BinaryOperator<Integer> add = (x,y)->x+y。
3、流:常見的流操作
3.1、collect(toList())
//及早求值方法 long count = artists.stream().filter(a->a.isFrom("china")).count(); long count2 = artists.stream().filter(b->b.getName().equals("TTG")).count();long count3 = artists.stream() .filter(a->{ System.out.println(a.getName()); return a.isFrom("china"); }) .count();
List<String> collected = Stream.of("a","b","c").collect(Collectors.toList()); String collectedStr = JSONArray.toJSONString(collected); booleanisequal = collected.equals(Arrays.asList("a","b","c"));
3.2、map
//2.map List<String> str = Stream.of("a","b","c") .map(s -> s.toUpperCase()) .collect(Collectors.toList()); String realStr = JSONArray.toJSONString(str); boolean isSame = realStr.equals(Arrays.asList("A","B","C"));
3.3、filter
//3.filter List<Object> str2 = Stream.of("abc","1abc","abc1") .filter(s -> isDight(s.charAt(0))) .collect(Collectors.toList()); String rStr2 = JSONArray.toJSONString(str2);
3.4、flatMap
//flatMap:flatMap 方法可用 Stream 替換值,然後將多個 Stream 連接成一個 Stream List<String> str3 = Stream.of(Arrays.asList("a","b","c"),Arrays.asList("d","e")) .flatMap(stringList -> stringList.stream()) .collect(Collectors.toList()); String rStr3 = JSONArray.toJSONString(str3);
3.5、max和min
//max min List<Track> tracks = Arrays.asList(new Track("Bakai", 524), new Track("Violets for Your Furs", 378), new Track("Time Was", 451)); Track shortTrack = tracks.stream().min(Comparator.comparing(track>track.getLength())) .get();
3.6、整合+通用模式
//reduce //1.累加 int count4 = Stream.of(1,2,3) .reduce(0,(acc,res)->acc+res); //整合 Album album = null; Set<String> orgin = album.getMusicians() .filter(artist -> artist.getName().startsWith("The")) .map(artist -> artist.getNationality()) .collect(Collectors.toSet()); System.out.println(count4); int totalMembers = 0; for (Artist artist : artists) { Stream<Artist> members = artist.getMembers(); totalMembers += members.count(); } }
Java8函數式編程