1、filter:过滤
2、limit:获取前几个元素
import java.util.ArrayList;
import java.util.Collections;
public class Stream01 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,"张三","李四","王五","张六六");
list.stream()
.filter(s -> s.startsWith("张"))
.filter(s->s.length()==3)
.forEach(s->System.out.println(s));
}
}
3、skip:跳过前几个元素
import java.util.ArrayList;
import java.util.Collections;
public class Stream01 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,"张三","李四","王五","张六六");
// 思路1
list.stream().skip(1).limit(2).forEach(s->System.out.println(s));
// 思路2
list.stream().limit(3).skip(1).forEach(s->System.out.println(s));
}
}
4、distinct:元素去重
import java.util.ArrayList;
import java.util.Collections;
public class Stream01 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,"张三","李四","王五","张六六","李四");
list.stream().distinct().forEach(s->System.out.println(s));
}
}
5、concat:合并a和b两个流为一个大流
import java.util.ArrayList;
import java.util.Collections;
import java.util.stream.Stream;
public class Stream01 {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<>();
Collections.addAll(list1,"张三","李四","王五","张六六","李四");
ArrayList<String> list2 = new ArrayList<>();
Collections.addAll(list2,"张三三","李四四","王五五");
Stream.concat(list1.stream(),list2.stream()).forEach(s->System.out.println(s));
}
}
6、map:转换流中的数据类型
import java.util.ArrayList;
import java.util.Collections;
import java.util.function.Function;
import java.util.stream.Stream;
public class Stream01 {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<>();
Collections.addAll(list1,"张三-18","李四-19","王五-20","张六六-30","李四-40");
//方法1
list1.stream().map(new Function<String, Integer>() {
@Override
public Integer apply(String s){
String[] arr=s.split("-");
String ageString = arr[1];
int age = Integer.parseInt(ageString);
return age;
}
}).forEach(s->System.out.println(s));
//方法2
System.out.println("-----------------------------");
list1.stream()
.map(s -> Integer.parseInt(s.split("-")[1]))
.forEach(s-> System.out.println(s));
}
}
注:原来的Stream流只能使用一次,故使用链式编程,修改Stream流的数据不会影响原来集合或者数组里的数据