Java基础-stream流的使用

目录

案例要求:

实现思路:

代码:

总结:


案例要求:

实现思路:

创建一个包含学生姓名(String)和选择地址变量(集合)的实体类,然后将题干数据封装到集合,然后进行stream操作

代码:

java 复制代码
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;

//TIP 要<b>运行</b>代码,请按 <shortcut actionId="Run"/> 或
// 点击装订区域中的 <icon src="AllIcons.Actions.Execute"/> 图标。
public class Main {
    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        List<Student> students = new ArrayList<>();
        students.add(new Student("张全蛋儿", List.of("农家乐", "野外拓展")));
        students.add(new Student("李二狗子", List.of("轰趴", "野外拓展", "健身房")));
        students.add(new Student("翠花", List.of("野外拓展")));
        students.add(new Student("小帅", List.of("轰趴", "健身房")));
        students.add(new Student("有容", List.of("农家乐")));
        // 1. 统计每个去处的人数并找出投票最多的去处
        Map<String, Integer> placeCountMap = new HashMap<>();
        students.forEach(student -> student.getChoices().forEach(choice -> {
            placeCountMap.put(choice, placeCountMap.getOrDefault(choice, 0) + 1);
        }));
        
        String mostPopularPlace = placeCountMap.entrySet().stream()
                .max(Map.Entry.comparingByValue())
                .map(Map.Entry::getKey)
                .orElse(null);

        System.out.println("每个去处的人数:");
        placeCountMap.forEach((place, count) -> System.out.println(place + ":" + count));
        System.out.println("投票最多的去处是:" + mostPopularPlace);

        // 2. 找出没有选择投票最多去处的学生
        List<String> studentsWithoutMostPopular = students.stream()
                .filter(student ->!student.getChoices().contains(mostPopularPlace))
                .map(Student::getName)
                .collect(Collectors.toList());

        System.out.println("没有选择投票最多去处的学生:" + studentsWithoutMostPopular);
    }
}

总结:

这篇文章展示了一个简单的Java程序,用于统计学生选择的去处情况。程序首先创建了5个学生对象及其选择的活动去处,然后:1)统计每个去处的人数并找出投票最多的去处;2)找出没有选择最受欢迎去处的学生名单。程序使用了集合操作和流处理来实现统计功能,最终输出每个去处的人数统计、最受欢迎去处以及未选择该去处的学生名单。这个案例演示了如何使用Java集合框架进行基本的数据分析和处理。

相关推荐
B站计算机毕业设计之家14 分钟前
智慧交通项目:Python+PySide6 车辆检测系统 YOLOv8+OpenCV 自定义视频 自定义检测区域 (源码+文档)✅
大数据·python·opencv·yolo·智慧交通·交通·车流量
java1234_小锋44 分钟前
TensorFlow2 Python深度学习 - 深度学习概述
python·深度学习·tensorflow·tensorflow2·python深度学习
绿油果1 小时前
Javaweb(BeanUtils)
java·web
拧之1 小时前
✅XXL-JOB的基本使用
java
迈火2 小时前
PuLID_ComfyUI:ComfyUI中的图像生成强化插件
开发语言·人工智能·python·深度学习·计算机视觉·stable diffusion·语音识别
老朋友此林3 小时前
MongoDB GEO 项目场景 ms-scope 实战
java·数据库·spring boot·mongodb
浔川python社4 小时前
《网络爬虫技术规范与应用指南系列》(xc—5)完
爬虫·python
豆沙沙包?4 小时前
2025年--Lc165--H637.二叉树的层平均值(二叉树的层序遍历)--Java版
java·开发语言
迎風吹頭髮5 小时前
UNIX下C语言编程与实践40-UNIX 全局跳转:setjmp 与 longjmp 函数的使用与注意事项
java·c语言·unix
春风霓裳5 小时前
maven-setting配置
java·maven