Stream流概述
import java.util.ArrayList;
import java.util.List;
public class StreamDemo01 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("张无忌");
list.add("周芷若");
list.add("赵敏");
list.add("张强");
list.add("张三丰");
list.stream().filter(s -> s.startsWith("张")).filter( s -> s.length()== 3 )
.forEach(System.out::println);
}
}
Stream流的获取
import java.util.*;
import java.util.stream.Stream;
public class StreamDemo01 {
public static void main(String[] args) {
Collection<String> c = new ArrayList<>();
Stream<String> ss = c.stream();
Map<String, Integer> map = new HashMap<>();
Stream<String> keyss = map.keySet().stream();
Stream<Integer> valuess = map.values().stream();
Stream<Map.Entry<String,Integer>> keyAndValues = map.entrySet().stream();
String[] arrs = new String[]{"Java", "JavaEE" ,"Spring Boot"};
Stream<String> arrsSS1 = Arrays.stream(arrs);
Stream<String> arrsSS2 = Stream.of(arrs);
}
}
Stream流的常用API
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
public class StreamDemo01 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("张无忌");
list.add("周芷若");
list.add("赵敏");
list.add("张强");
list.add("张三丰");
list.add("张三丰");
list.stream().filter( s -> s.length() == 3 ).filter( s -> s.startsWith("张"))
.forEach( System.out::println);
long count = list.stream().filter( s -> s.length() == 3 )
.filter( s -> s.startsWith("张")).count();
System.out.println(count);
list.stream().filter(s -> s.length() == 3).limit(2)
.forEach( System.out::println);
list.stream().filter(s -> s.length() == 3).skip(2)
.forEach( System.out::println);
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
public class StreamDemo02 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("张无忌");
list.add("周芷若");
list.add("赵敏");
list.add("张强");
list.add("张三丰");
list.add("张三丰");
list.stream().map(a -> "黑马的:"+a).forEach(System.out::println);
list.stream().map(Student::new).forEach(System.out::println);
}
}
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class StreamDemo03 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("张无忌");
list.add("周芷若");
list.add("赵敏");
list.add("张强");
list.add("张三丰");
list.add("张三丰");
Stream<Integer> s1 = Stream.of(10, 20 ,30 ,40);
Stream<String> s2 = list.stream();
Stream<Object> s3 = Stream.concat(s1,s2);
s3.forEach(System.out::println);
}
}
public class Student {
private String name ;
public Student(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
'}';
}
}
Stream流的综合应用
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class StreamDemo {
public static void main(String[] args) {
List<String> one = new ArrayList<>();
one.add("迪丽热巴");
one.add("宋远桥");
one.add("苏星河");
one.add("老子");
one.add("庄子");
one.add("孙子");
one.add("洪七公");
List<String> two = new ArrayList<>();
two.add("古力娜扎");
two.add("张无忌");
two.add("张三丰");
two.add("赵丽颖");
two.add("张二狗");
two.add("张天爱");
two.add("张三");
Stream<String> oneStream =
one.stream().filter(s -> s.length() == 3).limit(3);
Stream<String> twoStream =
two.stream().filter(s -> s.startsWith("张")).skip(2);
Stream<String> allStream = Stream.concat(oneStream , twoStream);
allStream.map(Student::new).forEach(System.out::println);
}
}
public class Student {
private String name ;
public Student(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
'}';
}
}
终结与非终结方法
import java.util.ArrayList;
import java.util.List;
public class StreamDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("张无忌");
list.add("周芷若");
list.add("赵敏");
list.add("张强");
list.add("张三丰");
list.add("张三丰");
list.stream().filter(s -> s.startsWith("张"))
.filter(s -> s.length() == 3).forEach(System.out::println);
long count = list.stream().filter(s -> s.startsWith("张"))
.filter(s -> s.length() == 3).count();
System.out.println(count);
}
}
收集Stream流:把Stream流的数据转回成集合
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("张无忌");
list.add("周芷若");
list.add("赵敏");
list.add("张强");
list.add("张三丰");
list.add("张三丰");
Stream<String> zhangLists = list.stream().filter(s -> s.startsWith("张"));
Set<String> sets = zhangLists.collect(Collectors.toSet());
System.out.println(sets);
Stream<String> zhangLists1 = list.stream().filter(s -> s.startsWith("张"));
List<String> lists= zhangLists1.collect(Collectors.toList());
System.out.println(lists);
Stream<String> zhangLists2 = list.stream().filter(s -> s.startsWith("张"));
Object[] arrs = zhangLists2.toArray();
String[] arrs1 = zhangLists2.toArray(String[]::new);
}
}