一附鸽、Java中重要的函數(shù)接口
- Predicate<T>: 接受一個(gè)對象弦撩,作判斷昨稼,返回一個(gè)布爾值
- Consumer<T>: 接受一個(gè)對象节视,消費(fèi)輸入,輸出一個(gè)值
- Function<T,R>: 接受一個(gè)對象假栓,獲得對象的名字
- Supplier<T>: 工廠方法
- UnaryOperator<T>: 接受一個(gè)對象寻行,計(jì)算邏輯非(!)
- BinaryOperator<T>: 接受兩個(gè)數(shù),求兩個(gè)數(shù)的運(yùn)算結(jié)果
二匾荆、常用的流操作【惰性求值(返回值是Stream)拌蜘,及早求值(返回值是另一個(gè)值或?yàn)榭眨?/h2>
-
collect(toList()): 由Stream 里的值生成一個(gè)列表
List<String> collected = Stream.of("a", "b", "c")
.collect(Collectors.toList());
-
map: 將Stream里一種類型的值轉(zhuǎn)換成另外一種類型,即用一個(gè)新的值代替Stream中的值
List<String> collected = Stream.of("a", "b", "hello")
.map(string -> string.toUpperCase())
.collect(toList());
-
flatMap: 可用Stream替換值牙丽,然后將多個(gè)Stream連接成一個(gè)Stream简卧,生成一個(gè)新的Stream對象
List<Integer> together = Stream.of(asList(1, 2), asList(3, 4))
.flatMap(numbers -> numbers.stream())
.collect(toList());
-
filter: 遍歷數(shù)據(jù)并檢查其中的元素,保留Stream中符合條件的的元素烤芦,而過濾掉其他不符合條件的
List<String> beginningWithNumbers = Stream.of("a", "1abc", "abc1")
.filter(value -> isDigit(value.charAt(0)))
.collect(toList());
-
max和min: 求最大值和最小值举娩,返回Optional對象
List<Track> tracks = asList(new Track("Bakai", 524),new Track("Violets for Your Furs", 378), new Track("Time Was", 451));
Track shortestTrack = tracks.stream()
.min(Comparator.comparing(track -> track.getLength()))
.get();
get: 可以取出Optional對象中的值
-
reduce: 實(shí)現(xiàn)從一組值中生成一個(gè)值
求和:int count = Stream.of(1, 2, 3)
.reduce(0, (acc, element) -> acc + element);
collect(toList()): 由Stream 里的值生成一個(gè)列表
List<String> collected = Stream.of("a", "b", "c")
.collect(Collectors.toList());
map: 將Stream里一種類型的值轉(zhuǎn)換成另外一種類型,即用一個(gè)新的值代替Stream中的值
List<String> collected = Stream.of("a", "b", "hello")
.map(string -> string.toUpperCase())
.collect(toList());
flatMap: 可用Stream替換值牙丽,然后將多個(gè)Stream連接成一個(gè)Stream简卧,生成一個(gè)新的Stream對象
List<Integer> together = Stream.of(asList(1, 2), asList(3, 4))
.flatMap(numbers -> numbers.stream())
.collect(toList());
filter: 遍歷數(shù)據(jù)并檢查其中的元素,保留Stream中符合條件的的元素烤芦,而過濾掉其他不符合條件的
List<String> beginningWithNumbers = Stream.of("a", "1abc", "abc1")
.filter(value -> isDigit(value.charAt(0)))
.collect(toList());
max和min: 求最大值和最小值举娩,返回Optional對象
List<Track> tracks = asList(new Track("Bakai", 524),new Track("Violets for Your Furs", 378), new Track("Time Was", 451));
Track shortestTrack = tracks.stream()
.min(Comparator.comparing(track -> track.getLength()))
.get();
get: 可以取出Optional對象中的值
reduce: 實(shí)現(xiàn)從一組值中生成一個(gè)值
求和:int count = Stream.of(1, 2, 3)
.reduce(0, (acc, element) -> acc + element);