Java基础 Stream流的中间方法

 

sorted ():排序

 

举例:

sorted ():

ArrayList<Integer> list = new ArrayList<>();
Collections.addAll(list, 1, 6, 5);
list.stream().sorted(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});

filter 过滤:

ArrayList<String> list = new ArrayList<>();
Collections.addAll(list, "张三", "李四", "王五", "赵六");
list.stream().filter(new Predicate<String>() {
@Override
public boolean test(String s) {
// s 依次表示流里面的每一个数据,返回值为 true 表示当前数据留下,如果返回值为 false 表示当前数据舍弃不要
return s.startsWith("张");//返回姓张的人
}
}).forEach(s -> System.out.println(s));


limit 获取前几个元素:
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list, "张三", "李四", "王五", "赵六");
list.stream().limit(3).forEach(s -> System.out.println(s)); // 返回前三个元素

skip 跳过前几个元素:
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list, "张三", "李四", "王五", "赵六");
list.stream().skip(3).forEach(s -> System.out.println(s)); // 跳过前三个元素

concat合并两个流的方法尽可能保证 a 和 b 两个流中的数据类型是一致的。如果 a 流里的数据类型是 x,b 流里的数据类型是 y,合并后的类型就是 x 和 y 共同的父类,相当于做了一个类型的提升,提升之后无法使用子类里面的特有功能
Stream.concat(a, b)


map 方法:
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list, "张三-15", "李四-16", "王五-17", "赵六-18");

// Function 里面有两个泛型,第一个表示流里面原本的数据类型,第二个表示要转成之后的类型
list.stream().map(new Function<String, Integer>() {
@Override
public Integer apply(String s) {
// 形参 s 依次表示流里面的每一个数据,返回值表示转换之后的数据
String[] arr = s.split("-");
String ageString = arr[1];
int age = Integer.parseInt(ageString);
return age;
}
}).forEach(s -> System.out.println(s)); // 打印结果:15 16 17 18

posted @ 2023-10-19 17:00  1stzz1  阅读(48)  评论(0)    收藏  举报