import java.util.*;
import java.util.stream.Collectors;
public class UserCollectionExample {
public static void main(String[] args) {
// 创建一个用户集合
List
new User("张三", 20, "北京"),
new User("李四", 25, "上海"),
new User("王五", 30, "广州"),
new User("赵六", 35, "深圳"),
new User("孙七", 20, "北京")
);
// 过滤年龄大于25的用户
List<User> filteredUsers = users.stream()
.filter(user -> user.getAge() > 25)
.collect(Collectors.toList());
// 输出过滤后的用户
filteredUsers.forEach(System.out::println);
// 映射用户的名字
List<String> userNames = users.stream()
.map(User::getName)
.collect(Collectors.toList());
// 输出用户的名字
userNames.forEach(System.out::println);
// 对用户按年龄排序
List<User> sortedUsers = users.stream()
.sorted(Comparator.comparingInt(User::getAge))
.collect(Collectors.toList());
// 输出排序后的用户
sortedUsers.forEach(System.out::println);
// 查找年龄为25的用户
Optional<User> userOptional = users.stream()
.filter(user -> user.getAge() == 25)
.findFirst();
// 输出找到的用户
userOptional.ifPresent(System.out::println);
// 检查是否有来自广州的用户
boolean hasGuangzhouUser = users.stream()
.anyMatch(user -> user.getCity().equals("广州"));
// 输出检查结果
System.out.println("是否有来自广州的用户: " + hasGuangzhouUser);
// 获取所有用户的年龄列表
List<Integer> userAges = users.stream()
.map(User::getAge)
.collect(Collectors.toList());
// 输出年龄列表
userAges.forEach(System.out::println);
// 使用reduce计算所有用户的总年龄
Optional<Integer> totalAge = users.stream()
.map(User::getAge)
.reduce(Integer::sum);
// 输出总年龄
totalAge.ifPresent(age -> System.out.println("所有用户的总年龄: " + age));
// 按城市分组用户
Map<String, List<User>> usersByCity = users.stream()
.collect(Collectors.groupingBy(User::getCity));
// 输出按城市分组的用户
usersByCity.forEach((city, userList) -> {
System.out.println(city + ":");
userList.forEach(System.out::println);
});
// 获取所有用户的名字并合并成一个字符串
String allNames = users.stream()
.map(User::getName)
.collect(Collectors.joining(", "));
// 输出合并后的名字
System.out.println("所有用户的名字: " + allNames);
// 获取年龄大于25的用户数量
long countOfUsersAbove25 = users.stream()
.filter(user -> user.getAge() > 25)
.count();
// 输出数量
System.out.println("年龄大于25的用户数量: " + countOfUsersAbove25);
// 获取最小年龄的用户
Optional<User> youngestUser = users.stream()
.min(Comparator.comparingInt(User::getAge));
// 输出最小年龄的用户
youngestUser.ifPresent(user -> System.out.println("最小年龄的用户: " + user));
// 获取最大年龄的用户
Optional<User> oldestUser = users.stream()
.max(Comparator.comparingInt(User::getAge));
// 输出最大年龄的用户
oldestUser.ifPresent(user -> System.out.println("最大年龄的用户: " + user));
// 按城市分区用户
Map<Boolean, List<User>> usersPartitionedByCity = users.stream()
.collect(Collectors.partitioningBy(user -> user.getCity().equals("北京")));
// 输出按城市分区的用户
usersPartitionedByCity.forEach((key, userList) -> {
System.out.println((key ? "来自北京" : "不来自北京") + ":");
userList.forEach(System.out::println);
});
}
}
class User {
private String name;
private int age;
private String city;
public User(String name, int age, String city) {
this.name = name;
this.age = age;
this.city = city;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getCity() {
return city;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", city='" + city + '\'' +
'}';
}
}
标签:stream,用户,System,User,println,out From: https://www.cnblogs.com/itlihao/p/18675295