[Java][Collections运用]学生信息管理系统plus

 一些常用的Collections的方法:

Collections.shuffle(集合名);这个是随机打乱某个集合中元素的顺序 也就是洗牌

Collections.addAll(集合名,元素1,元素2);这个就是一次性去添加多个元素

如下:

  1. 排序(Sorting)

    • sort(List<T> list): 对列表进行原位排序
    • reverse(List<?> list): 反转指定列表中元素的顺序
    • shuffle(List<?> list): 使用默认随机源对指定列表进行置换
  2. 查找和替换(Searching and Replacing):

    • binarySearch(List<? extends Comparable<? super T>> list, T key): 使用二分搜索算法搜索指定列表,以获得指定对象
    • replaceAll(List<T> list, T oldVal, T newVal): 用新值替换指定列表中的所有旧值
  3. 线程安全集合(Synchronized Collections):

    • synchronizedCollection(Collection<T> c): 返回指定 collection 支持的同步(线程安全的) collection
    • synchronizedList(List<T> list): 返回指定列表支持的同步(线程安全的)列表
  4. 不可修改集合(Immutable Collections):

    • unmodifiableCollection(Collection<? extends T> c): 返回指定 collection 的不可修改视图
    • unmodifiableList(List<? extends T> list): 返回指定列表的不可修改视图
  5. 批操作(Bulk Operations):

    • addAll(Collection<? super T> c, T... elements): 将所有指定元素添加到指定 collection 中
    • copy(List<? super T> dest, List<? extends T> src): 将所有元素从一个列表复制到另一个列表
  6. 最大、最小值(Max and Min):

    • max(Collection<? extends T> coll): 根据其自然顺序返回给定 collection 的最大元素
    • min(Collection<? extends T> coll): 根据其自然顺序返回给定 collection 的最小元素

 

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        ArrayList<Student> allStudents = new ArrayList<>();
        Student temps = new Student();
        int idCounter = 1; // 用于分配学生编号

        while (true) {
            System.out.println("学生管理系统————by XYC");
            System.out.println("1.添加学生请输入1");
            System.out.println("2.删除学生请输入2");
            System.out.println("3.查找学生请输入3");
            System.out.println("4.获取年龄最大学生请输入4");
            System.out.println("5.随机打乱学生请输入5");
            System.out.println("6.输出所有学生信息请输入6");
            System.out.println("0.退出请输入0");

            Scanner sc = new Scanner(System.in);
            int select = sc.nextInt();

            switch (select) {
                case 1:
                    System.out.println("请输入学生姓名");
                    temps.setName(sc.next());
                    System.out.println("请输入学生的年龄");
                    temps.setAge(sc.nextInt());
                    temps.setId(idCounter);
                    idCounter++; // 学生编号递增
                    allStudents.add(temps);
                    System.out.println(temps + " 已经输入成功 编号为" + temps.getId());
                    break;
                case 2:
                    System.out.println("请输入要删除学生的编号");
                    int deleteId = sc.nextInt();
                    boolean removed = false;
                    for (Student student : allStudents) {
                        if (student.getId() == deleteId) {
                            allStudents.remove(student);
                            removed = true;
                            System.out.println("删除成功");
                            break; // 找到匹配的学生并移除后直接跳出循环
                        }
                    }
                    if (!removed) {
                        System.out.println("未找到对应编号的学生");
                    }
                    break;
                case 4:
                    System.out.println(Collections.max(allStudents, new Comparator<Student>() {
                        @Override
                        public int compare(Student o1, Student o2) {
                            return o1.getAge() - o2.getAge();
                        }

                    }));
                case 5:
                    Collections.shuffle(allStudents);
                case 6:
                    System.out.println(allStudents);
                    break;
                case 0:
                    System.out.println("退出程序");
                    return; // 退出程序
                
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/237255.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c++时间转换

获取当前时间字符串 std::string GetFormatTime() {time_t currentTime;time(&currentTime);tm* t_tm localtime(&currentTime);char formatTime[64] {0};snprintf(formatTime, 64, "%04d-%02d-%02d %02d:%02d:%02d", t_tm->tm_year 1900,t_tm->tm…

Python从入门到精通五:Python函数

函数介绍 学习目标&#xff1a; 快速体验函数的使用了解函数的作用 函数&#xff1a;是组织好的&#xff0c;可重复使用的&#xff0c;用来实现特定功能的代码段。 我们使用过的&#xff1a;input()、print()、str()、int()等都是Python的内置函数。 为什么要学习、使用函…

2023年团体程序设计天梯赛——总决赛题

F-L1-1 最好的文档 有一位软件工程师说过一句很有道理的话&#xff1a;“Good code is its own best documentation.”&#xff08;好代码本身就是最好的文档&#xff09;。本题就请你直接在屏幕上输出这句话。 输入格式&#xff1a; 本题没有输入。 输出格式&#xff1a; 在一…

使用 PyTorch FSDP 微调 Llama 2 70B

通过本文&#xff0c;你将了解如何使用 PyTorch FSDP 及相关最佳实践微调 Llama 2 70B。在此过程中&#xff0c;我们主要会用到 Hugging Face Transformers、Accelerate 和 TRL 库。我们还将展示如何在 SLURM 中使用 Accelerate。 完全分片数据并行 (Fully Sharded Data Paral…

java--集合基础

1.集合和数组的特点对比 集合类的特点 提供一种存储空间可变的存储模型&#xff0c;存储的数据容量可以发生改变 集合和数组的区别 共同点&#xff1a;都是存储数据的容器 不同点&#xff1a;数组的容量是固定的&#xff0c;集合的容量是可变的 2.ArrayList集合 ArrayLi…

解决 Element-ui中 表格(Table)使用 v-if 条件切换后,表格的列的筛选不显示了

解决方法 在每个需要使用 v-if 或 v-else 的 el-table-column 上增加 key 作为唯一标识&#xff0c;这样渲染的时候就不会因为复用原则导致列数据混乱了。关于key值&#xff0c;一般习惯使用字段名&#xff0c;也可随机生成一个值&#xff0c;只要具有唯一性就可以。

Centos7云服务器上安装cobalt_strike_4.7。附cobalt_strike_4.7安装包

环境这里是阿里的一台Centos7系统。 开始安装之前首先要确保自己安装了java11及以上环境。 安装java11步骤&#xff1a; sudo yum update sudo yum install java-11-openjdk-devel把服务器端&#xff08;CS工具分服务器端和客户端&#xff09;的CS安装到服务器上后给目录下的…

mysql原理--B+树索引的使用

1.索引的代价 在介绍如何更好的使用索引之前先要了解一下使用这玩意儿的代价&#xff0c;它在空间和时间上都会拖后腿&#xff1a; (1). 空间上的代价 这个是显而易见的&#xff0c;每建立一个索引都要为它建立一棵 B 树&#xff0c;每一棵 B 树的每一个节点都是一个数据页&…

Proxmark3 Easy救砖-20231209

事情是这样的&#xff0c;在淘宝买了个PM3&#xff0c;拿到手后刷固件的&#xff0c;一不小心刷成砖头了&#xff0c;现象就是四个灯全亮&#xff0c;插上电脑USB不识别。问商家他也不太懂&#xff0c;也是个半吊子技术&#xff0c;远程给我刷机搞了半天也没有搞定&#xff0c;…

Softmax回归

一、Softmax回归关键思想 1、回归问题和分类问题的区别 Softmax回归虽然叫“回归”&#xff0c;但是它本质是一个分类问题。回归是估计一个连续值&#xff0c;而分类是预测一个离散类别。 2、Softmax回归模型 Softmax回归跟线性回归一样将输入特征与权重做线性叠加。与线性回归…

排序算法:【冒泡排序】、逻辑运算符not用法、解释if not tag:

注意&#xff1a; 1、排序&#xff1a;将一组无序序列&#xff0c;调整为有序的序列。所谓有序&#xff0c;就是说&#xff0c;要么升序要么降序。 2、列表排序&#xff1a;将无序列表变成有序列表。 3、列表这个类里&#xff0c;内置排序方法&#xff1a;sort( )&#xff0…

排序-选择排序与堆排序

文章目录 一、选择排序二、堆排序三、时间复杂度四、稳定性 一、选择排序 思想&#xff1a; 将数组第一个元素作为min&#xff0c;然后进行遍历与其他元素对比&#xff0c;找到比min小的数就进行交换&#xff0c;直到最后一个元素就停止&#xff0c;然后再将第二个元素min&…

使用NCNN在华为M5部署MobileNet-SSD

一、下载ncnn-android-vulkan ncnn-android-vulkan.zip 文件是一个压缩文件&#xff0c;其中包含了 ncnn 框架在 Android 平台上使用 Vulkan 图形库加速的相关文件和代码。 在 Android 平台上&#xff0c;ncnn 框架可以利用 Vulkan 的并行计算能力来进行神经网络模型的推理计…

算法——位运算

常见位运算总结 基础位运算 << >> ~与&&#xff1a;有0就是0或|&#xff1a;有1就是1异或^&#xff1a;相同为0&#xff0c;相异为1 / 无进位相加 给一个数n&#xff0c;确定他的二进制表示中的第x位是0还是1 让第x位与上1即可先让n右移x位&上一个1&#…

【docker三】Docker镜像的创建方法

目录 一、Docker镜像&#xff1a; 1、 镜像的概念 2、docker的创建镜像方式&#xff1a; 1.1、基于已有镜像进行创建&#xff1a; 1.2、基于模版创建&#xff1a; 1.3、基于dockerfile创建&#xff1a; 二、Dockerfile概述 1、Dockerfile概念&#xff1a; 2、dockerfile…

【UI自动化测试】appium+python+unittest+HTMLRunner

简介 获取AppPackage和AppActivity 定位UI控件的工具 脚本结构 PageObject分层管理 HTMLTestRunner生成测试报告 启动appium server服务 以python文件模式执行脚本生成测试报告 下载与安装 下载需要自动化测试的App并安装到手机 获取AppPackage和AppActivity 参考&#xff…

AWS攻略——使用中转网关(Transit Gateway)连接不同区域(Region)VPC

文章目录 Peering方案Transit Gateway方案环境准备创建Transit Gateway Peering Connection接受邀请修改中转网关路由修改被邀请方中转网关路由修改邀请方中转网关路由 测试修改Public子网路由 知识点参考资料 区别于 《AWS攻略——使用中转网关(Transit Gateway)连接同区域(R…

云降水物理基础

云降水物理基础 云的分类 相对湿度变化方程 由相对湿度的定义&#xff0c;两边取对数之后可以推出 联立克劳修斯-克拉佩龙方程&#xff08;L和R都为常数&#xff09; 由右式看出&#xff0c;增加相对湿度的方式&#xff1a;增加水汽&#xff08;de增大&#xff09;和降低…

SpringData JPA 搭建 xml的 配置方式

1.导入版本管理依赖 到父项目里 <dependencyManagement><dependencies><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-bom</artifactId><version>2021.1.10</version><scope>…

全新UI彩虹外链网盘系统源码V5.5/支持批量封禁+优化加载速度+用户系统与分块上传

源码简介&#xff1a; 全新UI彩虹外链网盘系统源码V5.5&#xff0c;它可以支持批量封禁优化加载速度。新增用户系统与分块上传。 彩虹外链网盘&#xff0c;作为一款PHP网盘与外链分享程序&#xff0c;具备广泛的文件格式支持能力。它不仅能够实现各种格式文件的上传&#xff…
最新文章