一.forEach 遍历
//Stream 流 判断 进行 遍历
List<String> list = new ArrayList<>();
list.add("张三");
list.add("张三丰");
list.add("李四");
list.add("李二蛋");
list.stream()
.forEach(System.out::println);
二.filter 过滤
//可以通过filter 方法将一个流 转换成另一个子集流
//创建一个Stream 流
Stream<String> steam11=Stream.of("张三丰","张昭三","李易峰","奇斯塔里");
//过滤 姓张的 人
Stream<String> steam12=steam11.filter(name >name.startsWith("张"));
//输出
steam12.forEach(System.out::println);
三. sorted ( ) -排序
//排序 sorted -自然排序
@Test
public void test1() {
List<String> a= Arrays.asList("aaa","ddd","ccc","bbb");
a.stream()
//自然排序
.sorted()
//输出
.forEach(System.out::println);
}
//输出为
aaa bbb ccc ddd
//sorted(comparator T) 定制排序
List<Company> lists=Arrays.asList(
new Company("张三",24,2562.20),
new Company("李四",28,2577.56),
new Company("王五",26,2422.57)
);
//转为stream形式
lists.stream()
.sorted((e1,e2)->{
if(e1.getAge() .equals( e2.getAge())) {
return e1.getName().compareTo(e2.getName());
}else {
return e1.getAge().compareTo(e2.getAge());
}
})
.forEach(System.out::println);
四.limit 截断 使其元素不超过给定数量
lists.stream()
.sorted((e1,e2)->{
if(e1.getAge() .equals( e2.getAge())) {
return e1.getName().compareTo(e2.getName());
}else {
return e1.getAge().compareTo(e2.getAge());
}
}).limit(1)
.forEach(System.out::println);
五.skip(n) 跳过元素 与limit 合用 用于分页
lists.stream()
.sorted((e1,e2)->{
if(e1.getAge() .equals( e2.getAge())) {
return e1.getName().compareTo(e2.getName());
}else {
return e1.getAge().compareTo(e2.getAge());
}
}).skip(2)
.limit(1)
.forEach(System.out::println);
六.peek 主要被用在debug用途
Stream.of("one", "two", "three","four").filter(e -> e.length() > 3)
.peek(e -> System.out.println("Filtered value: " + e))
.map(String::toUpperCase)
.peek(e -> System.out.println("Mapped value: " + e))
.collect(Collectors.toList());