1.Stream流的三类方法
1.获取Stream流
创建一条流水线,并把数据放到流水线上准备进行操作
2.中间方法
流水线上的操作。
一次操作完毕之后,还可以继续进行其他操作。
3.终结方法
2.Stream流的获取
单列集合 :集合对象.stream();
双列集合:不能直接获取,需要间接获取
集合对象.keyset().stream();
集合对象.entryset().stream();
数组: Arrays.stream(数组名);
同种数据类型的多个数据:
Stream.of(数据1,数据2,数据3....);
//代码实例
//单列集合获取Stream流
ArrayList<String> list = new ArrayList<>(List.of("aaa", "bbb", "ccc"));
list.stream().forEach(s -> System.out.println(s));
//双列集合获取Stream流
HashMap<String, Integer> hm = new HashMap<>(Map.of("zhangsan", 23, "lisi", 24, "wangwu", 25, "zhaoliu", 26, "qianqi", 27));
//通过keySet()方法得到键构成的Set集合
hm.keySet().stream().forEach(s -> System.out.println(s));
//通过entrySet()方法得到键值对的Set集合
hm.entrySet().stream().forEach(s -> System.out.println(s));
//数组
int[] arr = {1, 2, 3, 4, 5};
Arrays.stream(arr).forEach(s -> System.out.println(s));
//同种数据类型的多个数据
Stream.of(1,2,3,4,5,6,7,8,9,10).forEach(s -> System.out.println(s));
3.filter
filter()方法会获取流中的每一个数据s, 而在test方法中我们需要重写对s的判断方法, 如果test方法返回结果为true,则当前的s留下, 反之则丢弃
//匿名内部类
list.stream().filter(new Predicate<String>() {
@Override
public boolean test(String s) {
return s.startsWith("张");
}
}).forEach(s -> System.out.println(s));
//lambda表达式
list.stream().filter(s -> s.startsWith("张")).forEach(s -> System.out.println(s));
4.其他常用中间方法
//limit(long maxsize)截取指定个数的数据
list.stream().limit(2).forEach(s -> System.out.println(s));
//skip(long n)跳过指定参数个数的数据
list.stream().skip(2).forEach(s -> System.out.println(s));
//(static) Stream.concat(Stream a, Stream b)合并a和b两个流
Stream.concat(list1.stream(), list2.stream()).forEach(s -> System.out.println(s));
//distinct(): 去除流中重复的元素,依赖(hashCode和equals方法)
list.stream().distinct().forEach(s -> System.out.println(s));
5.常用的终结方法
//void forEach(Consumer action): 对此流的每个元素执行操作
//需要重写Consumer中的void accept(T t)方法
//Long count()方法
List<String> list2 = List.of("张三丰", "张无忌", "张翠山", "王二麻子", "张良", "谢广坤","谢广坤","谢广坤","谢广坤");
ArrayList<String> list = new ArrayList<>(list2);
long count = list.stream().limit(2).count();
System.out.println(count);
//运行结果: 2
6. 收集操作
collect(Collector collector)
工具类Collectors提供了具体的收集方式
public static
public static
public static
//代码示例
ArrayList<Integer> list = new ArrayList<>(List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
List<Integer> list3 = list.stream().filter(i -> i % 2 == 0)
.collect(Collectors.toList());
System.out.println(list3);
不错不错
评论区hCaptcha生效了:)