首页 > 其他分享 >stream流

stream流

时间:2025-01-16 16:57:42浏览次数:1  
标签:stream 用户 System User println out

import java.util.*;
import java.util.stream.Collectors;

public class UserCollectionExample {
public static void main(String[] args) {
// 创建一个用户集合
List users = Arrays.asList(
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

相关文章

  • 介绍5种从resources获取inputStream的方法
    在大多数情况下,推荐使用ResourceLoader或ClassPathResource来加载资源文件。@Component@Slf4jpublicclassTestFileService{@AutowiredprivateResourceLoaderresourceLoader;@PostConstructpublicvoidtestInputStream()throwsIOException{......
  • 二次开发,在使用LangChain中的Tongyi模型进行流式输出streaming报错问题,官网框架的BUG
    在使用LangChain中的Tongyi模型进行流式输出时,按照官方的代码直接运行会报一个类型错误:TypeError:Additionalkwargskeyoutput_tokensalreadyexistsinleftdictandvaluehasunsupportedtype<class'int'>.​其指向的错误文件路径如下C:\Users\Chenhao\AppData\Lo......
  • reduce 到底是什么?Java8 Stream 的终极聚合工具详解
    reduce()是JavaStreamAPI提供的一个终端操作方法,用于将流中的元素组合起来生成一个单一的值。这一方法非常强大,可以实现累积、聚合、拼接等功能,适用于各种数据处理场景。1.reduce()方法的作用reduce()是一个通用的归约操作,它通过一个关联函数,逐个处理流中的每个元素,将......
  • Java中的高效集合操作:Stream API实战指南
    Java中的高效集合操作:StreamAPI实战指南1.引言:集合操作的痛点在日常开发中,我们经常需要对集合进行各种操作,比如过滤、映射、排序、聚合等。传统的做法是使用for循环或Iterator,代码冗长且容易出错。比如:List<String>names=newArrayList<>();for(Useruser:users......
  • 深挖 Java8的Stream.flatMap:你不知道的流式操作技巧
    flatMap()是Java8StreamAPI的核心方法之一,主要用于将嵌套结构展开并生成一个新的流。它的强大之处在于能够处理复杂数据结构并将其转换为简单的线性流。以下是flatMap()的常见用法和应用场景:1.将嵌套集合展开为单一流用法处理嵌套的List或Set,将其扁平化为单一流。......
  • Windows 行为测试 删除 FileStream 正在读写文件可以继续读写
    测试结论:使用FileShare带Delete的共享方式打开的FileStream正在对文件进行读写过程中,可以对正在读写的文件进行删除。文件删除之后,不影响已经打开的FileStream的读写。且此时使用File.Exists方法判断文件是否存在,返回的是不存在如果删除之后,再次在外部新建同名文件,则......
  • 『玩转Streamlit』--查看K线的小工具
    在金融市场分析中,查看不同交易对的K线数据是一项基础且重要的工作。今天,我们就来学习如何使用Streamlit构建一个简单的K线查看小工具,让你能够方便地查看不同交易对在不同时间范围内的K线数据。1.环境准备首先,确保已经安装了必要的库。除了Streamlit用于构建界面,还......
  • 开发指南089-Stream API
        业务处理中会对从数据库返回集合元素进行加工处理,传统方法是使用for循环。平台遵循现代编程理念(回调函数、链式编程)等推荐使用StreamAPI。    第一步:创建Stream       List对象(通常是jpa调用后的实例类的集合),直接调用stream()函数   ......
  • streamlit实现聊天机器人应用,掌握使用Python构建好看web的页面
     第一个可视化的大模型应用。实现一个带有可视化界面的聊天机器人应用,可以将我们之前实现的聊天机器人转化为一个更加直观、用户友好的,我们的第一个可视化的大模型应用。通过使用Streamlit,我们借助st.columns、st.container、st.chat_input和st.chatmessage等streamlitAPl......
  • Streamlit,Streamlit会话及使用指南,将Streamlit部署到云端,通过Streamlit实现聊天机
    Streamlit介绍Streamlit是一个开源的Python库,专为快速创建数据可视化Web应用而设计。它的核心优势在于能够将简单的Python脚本迅速转换成交互式的Web应用,从而使数据科学家和工程师能够以最少的前端开发投入分享他们的数据分析成果。我们本门课程使用Streamlit构建我们的实战项目......