package basic.lambda;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
//Streamç使ç¨è¿ç¨æçåºå®ç模å¼ï¼
//
//å建Stream
//éè¿ä¸é´æä½ï¼å¯¹åå§Streamè¿è¡âååâå¹¶çææ°çStream
//使ç¨å®ç»æä½ï¼çææç»ç»æ
//ä¹å°±æ¯
//å建ââ>ååââ>å®ç»
public class StreamDemo {
List lists;
public StreamDemo() {
lists = new ArrayList<>();
lists.add("a1");
lists.add("a2");
lists.add("b1");
lists.add("b2");
lists.add("b3");
lists.add("o1");
}
public void streamFilterTest() {
lists.stream().filter((s -> s.startsWith("a")))
.forEach(System.out::println);
// çä»·äºä»¥ä¸æä½
Predicate predicate = (s) -> s.startsWith("a");
lists.stream().filter(predicate).forEach(System.out::println);
// è¿ç»è¿æ»¤
Predicate predicate1 = (s -> s.endsWith("1"));
lists.stream().filter(predicate).filter(predicate1)
.forEach(System.out::println);
}
public void streamSortedTest() {
System.out.println("é»è®¤Comparator");
lists.stream().sorted().filter((s -> s.startsWith("a")))
.forEach(System.out::println);
System.out.println("èªå®ä¹Comparator");
lists.stream().sorted((p1, p2) -> p2.compareTo(p1))
.filter((s -> s.startsWith("a"))).forEach(System.out::println);
}
public void streamMapTest() {
lists.stream().map(String::toUpperCase)
.sorted((a, b) -> b.compareTo(a)).forEach(System.out::println);
System.out.println("èªå®ä¹æ å°è§å");
Function function = (p) -> {
return p + ".txt";
};
lists.stream().map(String::toUpperCase).map(function)
.sorted((a, b) -> b.compareTo(a)).forEach(System.out::println);
}
public void streamMatchTest() {
// æµå¯¹è±¡ä¸åªè¦æä¸ä¸ªå
ç´ å¹é
å°±è¿åtrue
boolean anyStartWithA = lists.stream().anyMatch(
(s -> s.startsWith("a")));
System.out.println(anyStartWithA);
// æµå¯¹è±¡ä¸æ¯ä¸ªå
ç´ é½å¹é
å°±è¿åtrue
boolean allStartWithA = lists.stream().allMatch(
(s -> s.startsWith("a")));
System.out.println(allStartWithA);
}
public void streamCollectTest() {
List list = lists.stream().filter((p) -> p.startsWith("a"))
.sorted().collect(Collectors.toList());
System.out.println(list);
}
public void streamCountTest() {
long count = lists.stream().filter((s -> s.startsWith("a"))).count();
System.out.println(count);
}
public void streamReduceTest() {
Optional optional = lists.stream().sorted().reduce((s1, s2) -> {
System.out.println(s1 + "|" + s2);
return s1 + "|" + s2;
});
}
public static void main(String[] args) {
StreamDemo sd = new StreamDemo();
// sd.streamFilterTest();
// sd.streamSortedTest();
// sd.streamMapTest();
// sd.streamMatchTest();
// sd.streamCollectTest();
// sd.streamCountTest();
sd.streamReduceTest();
}
}