JAVA8 Strem
复习一下JAVA8 的Stream
代码如下:
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* JAVA 8 Stream 学习
* @author wei.he @version 0.0.1 @date 2023-08-10
*/
public class StreamDemo {
static class User {
@Override
public String toString() {
return "User{" +
"userName='" + userName + '\'' +
", age=" + age +
", nickName='" + nickName + '\'' +
'}';
}
private String userName;
private int age ;
private String nickName;
public User(String userName, int age, String nickName) {
this.userName = userName;
this.age = age;
this.nickName = nickName;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
}
public static List<User> generateList() {
List<User> user = new ArrayList<>();
user.add(new User("张三", 20, "A三"));
user.add(new User("李四", 25, "小四"));
user.add(new User("王五", 25, "小五"));
user.add(new User("赵六", 15, "溜子"));
return user;
}
public static void main(String[] args) {
List<User> users = generateList();
System.out.println("//找到年龄大于20,并且昵称为小开头的用户");
List<User> collect = users.stream().filter(user -> user.getAge() > 20
&& user.getNickName().startsWith("小")
).collect(Collectors.toList());
collect.forEach(System.out::println);
System.out.println("找不到年龄为25个用户返回Map<String,User>,key:userName");
Map<String, User> userMap = users.stream().filter(user -> user.getAge() == 25).collect(Collectors.toMap(User::getUserName, user -> user));
System.out.println(userMap);
System.out.println("根据年龄大小排序");
List<User> sortByAge = users.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(Collectors.toList());
sortByAge.forEach(System.out::println);
System.out.println("先按照年轻排序,然后根据姓名");
List<User> collect1 = users.stream().sorted(Comparator.comparing(User::getAge).thenComparing(User::getNickName)).collect(Collectors.toList());
collect1.forEach(System.out::println);
}
}