Stream概述:
对集合或数组元素进行操作的技术
可以将Stream流比做流水线,通过Stream流上的一道道工序(方法),对集合中的元素加工处理
Stream流对象:
单列对象:
集合对象.stream()
双列集合:
map.keyset().stream()得到键流
map.values().stream()得到值流
map.entryset().stream()得到entry流
public class test {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
//获得流对象
Stream<String> stream = list.stream();
Map<String,String> map=new HashMap<>();
//获得流对象
Stream<String> key = map.keySet().stream();
Stream<String> values = map.values().stream();
Stream<Map.Entry<String, String>> entry = map.entrySet().stream();
}
}
Stream常用方法:
常用方法 | 作用 | 格式 |
---|---|---|
map | 映射,将当前流中的元素从一个类型转换为另一个类型 | Stream<R> map(Function<T, R> mapper); |
filter | 对流中的元素过滤筛选 | Stream<t> filter(Predicate<t> predicate ) ; |
count | 获得流元素个数 | |
forEach | 用来遍历流中的元素 | |
collect | 收集流中的元素,把流处理后的结果收集出来,可以收集到list,set、map集合; | |
limit | 获取前n个元素,参数范围 [0,正无穷] | Stream<t> limit(long n); |
skip | 用来跳过前n个元素,就相当于过滤掉前n个元素 | Stream<t> skip(long n); |
public class test {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
//获得流对象
Stream<String> stream = list.stream();
//这是lambda表达式省略之后的,把所有值都转换成int类型的
Stream<Integer> intList = stream.map(t -> Integer.parseInt(t));
//遍历流对象,然后输出int+1
intList.forEach(str -> System.out.println(str+1));
}
}
Stream流使用注意事项:
流一旦使用一次之后,就不能再使用了,每个流只能调用一次流方法