stream:意思是 流 的意思,那么其操作的对象就应该是小个体组成的流,不能是一个完整的组合体如类(不是集合类),所以其可以操作集合,数组等。
方法: filter:过滤流中的某些元素
limit(n):获取n个元素
skip(n):跳过n元素,配合limit(n)可实现分页
distinct:通过流中元素的 hashCode() 和 equals() 去除重复元素
map:遍历每个集合中的元素,对每个能进行自己想要的操作,最后出流。
出流后,不转换,就会返回stream类型;
java代码:
package com.example.dtest.stream;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* filter:过滤流中的某些元素
* limit(n):获取n个元素
* skip(n):跳过n元素,配合limit(n)可实现分页
* distinct:通过流中元素的 hashCode() 和 equals() 去除重复元素
*
* */
public class StreamFLSD {
public static void main(String[] args) {
List<User> userList = new ArrayList<>();
userList.add(new User("daj","213464",456));
userList.add(new User("daj","2134546",456));
userList.add(new User("d456","213464",456));
userList.add(new User("daj","213464",456));
// 1、 filter 过滤
List<User> userListfilter = new ArrayList<>();
userListfilter = userList.stream().filter(user -> {
return user.getName().equals("daj");
}).collect(Collectors.toList());
System.out.println("userListfilter========"+userListfilter);
// 2、 limit(n):限制获取n个元素
List<User> userListLimit = new ArrayList<>();
userListLimit = userList.stream().limit(2).collect(Collectors.toList());
System.out.println("userListLimit==========="+userListLimit);
// 3、 skip(n):跳过n个元素,配合Limit(n)可实现分页效果
List<User> userListSkip = new ArrayList<>();
userListSkip = userList.stream().skip(2).collect(Collectors.toList());
System.out.println("userListSkip======="+userListSkip);
// 4、 distinct:通过流中元素的 hashCode() 和 equals() 去除重复元素
List<User> userListDistinct = new ArrayList<>();
userListDistinct = userList.stream().distinct().collect(Collectors.toList());
System.out.println("userListDistinct=========="+userListDistinct);
}
}
2、map:
package com.example.dtest.stream;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamMap {
public static void main(String[] args) {
List<User> users = new ArrayList<>();
User user1 = new User("556","56",123);
User user2 = new User("5565","564",1235);
users.add(user1);
users.add(user2);
//取出User中的phone集合,返回
List<String> phone = users.stream().map(User::getPhone).collect(Collectors.toList());
System.out.println(users.stream().map(User::getAge).collect(Collectors.toList()));
System.out.println(phone);
List<User01> s3 = users.stream().map(user -> {
User01 user01 = new User01();
if(user.getAge()==123){
user01.setAge(user.getAge()).setName("stream").setPhone("54687");
return user01;
}else {
user01.setAge(23).setName("5698");
}
return user01;
}).collect(Collectors.toList()); //collect(Collectors里面是对流操作的转换、排序等...),如果不加,就默认返回stream类型;
System.out.println("s3==========="+s3);
Stream stream = users.stream();
Object userList = stream.collect(Collectors.toList());
List list = (List)userList;
System.out.println(userList);
System.out.println(list.get(1));
list.add(list.size(), new User().setAge(111));
System.out.println(list);
}
}