package lambdaDemo;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.Clock;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.Random;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamDemo {
public static void main(String[] args) {
String[] x = {"赵","钱","孙","李","周","吴","郑","王","冯"};
String[] y = {"伯","仲","叔","季","甲","乙","丙","丁","三"};
List<User> userList = new ArrayList<User>();
for(int i = 0;i < 15;i++) {
String name = x[new Random().nextInt(x.length)] + y[new Random().nextInt(y.length)];
int age = new Random().nextInt(30);
User user = new User();
user.setName(name);
user.setAge(age);
//user.setCreateTime(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
userList.add(user);
}
userList.stream().forEach(user -> System.out.println(user));
System.out.println("================排序=============");
userList.stream().sorted((user1,user2) -> new Integer(user1.getAge()).compareTo(new Integer(user1.getAge())));
userList.stream().forEach(user -> System.out.println(user));
System.out.println("================过滤:找出年龄大于20的=============");
userList.stream().filter(user -> user.getAge() >20).forEach(user -> System.out.println(user));
List<User> filterList = userList.stream().filter(user -> user.getAge() >20).collect(Collectors.toList());
System.out.println("================找出集合中元素对象某一属性的集合=============");
List<String> attribute = userList.stream().map(user -> user.getName()).collect(Collectors.toList());
attribute.stream().forEach(name -> System.out.println(name));
System.out.println("================找出集合中元素对象姓名有三的人年龄改成90,并把所有元素对象的所有创建时间加上=============");
Timestamp now = new Timestamp(System.currentTimeMillis());
List<User> newUserList = userList.stream().map(user -> {
if(user.getName().contains("三")) {
user.setAge(90);
}
user.setCreateTime(now);
return user;
}).collect(Collectors.toList());
newUserList.stream().forEach(user -> System.out.println(user));
System.out.println("================找出集合中元素对象年龄为20的人数=============");
System.out.println(userList.stream().filter(user -> user.getAge() == 20).count());
System.out.println("================找出集合中元素对象年龄大于18岁的分一组,小于18岁分一组=============");
List<User> adultlist = userList.stream().filter(user -> user.getAge() >= 18).collect(Collectors.toList());
adultlist.stream().forEach(user -> System.out.println(user));
System.out.println("==============");
List<User> chilelist = userList.stream().filter(user -> user.getAge() < 18).collect(Collectors.toList());
chilelist.stream().forEach(user -> System.out.println(user));
System.out.println("================找出俩个集合的交集=============");
List<User> copylist = chilelist.subList(0, 2);
for(int i = 0;i < 4;i++) {
String name = x[new Random().nextInt(x.length)] + y[new Random().nextInt(y.length)];
int age = new Random().nextInt(30);
User user = new User();
user.setName(name);
user.setAge(age);
user.setCreateTime(now);
copylist.add(user);
}
copylist.stream().map(user -> {
if(userList.contains(user)) {
return user;
}else {
return null;
}
}).filter(user -> user != null).forEach(user -> System.out.println(user));
System.out.println("================找出copylist集合中userList没有的=============");
copylist.stream().map(user -> {
if(userList.contains(user)) {
return null;
}else {
return user;
}
}).filter(user -> user != null).forEach(user -> System.out.println(user));
}
}
总结:目前只想到了这些可能的应用场景。如果有新的会继续更新