学生选课系统基础版
第四章java中的集合框架
4.1:java中的集合框架概述
1.java概念与作用
现实中很多事物凑在一起都是集合 如购物车是商品的集合 军队呢 是军人的集合 学校是学生的结合 数学中的集合: 具有共同属性的事物的总体 java中的集合类呢 跟数学的集合有点类似 java中的集合:是一种工具,就像容器。存储任意数量的具有共同属性的对象
作用: 1.在类的内部,对数据进行组织2.简单而快速的搜索大数量的条目; 3.有的集合接口,提供了一系列排列有序的元素,并且可以在序列中间快速增删改
2.体系结构
3.实际应用
与数组不同的是 ——为何选择集合 而不是数组 因为数组的长度是固定的 而集合不同集合的长度是可以增加的
集合有两种 一个是Collection 另一个是Map 两个跟接口
Collection 有三个子接口 List Queue Set 其中呢List Queue是排列有序的 可重复的 而Set是无序列的 不可重复的 List的实现类 ArrayList Queue的实现类LinkedList Set的实现类HashSet
Map的最用的是HapMap(哈希码) <Kev,Value> 键值对
4.2:Collection接口
Collection接口
是List.Set和Queue接口的父接口 可以用于增删改查的操作
List接口以及实现类ArratList
List是元素有序并且可以重复的集合,被称为序列
List可以精确的控制每个元素的插入位置 或删除某个位置的元素
ArrayList 数组序列,是List的一个重要的实现类
ArrayList底层是由数组来实现的
4.3:学生选课 创建学生类和课程类
讲解创建了两个类 一个学生类一个课程类 然后定义了String类型的两个变量 一个 id 一个name 然后创建了一个含参构造器 使用this方法让新创建的参数等于传入进去的值
4.4:学生选课---添加课程
使用List储存 新建一个类 使用this 来new对象 ArrayList() 储存容器
创建一个课程对象,并调用add返回发,添加备选课程List中
创建主方法来 new对象 调用对象名的 add 来获取课程
4.5:学生选课---添加课程2
与4.4不同的是 add改成了addAll来添加数据 同样是使用强制转换将原来的Object来转换成相应的数据
4.5:学生选课---课程查询
使用get方法来获取课程 然后使用for循环 获得学生课程 再打印输出就可以 在主方法中来使用方法
另一种方法迭代器 再是使用迭代器来 wheil循环 通过hasnext来判断是否有下一个 然后在使用next方法来获取 知道hasnext判断没有下一值 结束循环 再打印输出
再另一种方法屎 foreach循环来 输出课程 使用for循环 Object循环遍历集合 还是需要使用强制类型转换 因为类型屎 Object类 所以要使用强制类型转换来转换相应的类型
4.6:学生选课---课程修改
修改List里的内容
使用set方法来修改对象 再在主方法中调用方法 打印输出
4.6:学生选课---课程删除
使用remove方法来删除 先是使用get方法来读取指定内容中的元素 传入到remove方法中删除 还是使用强制类型转换来
removeAll方法 使用方法是先来使用get方法来获取你想删除的课程的位置的
4.7:学生选课---应用泛型管理课程
如果在集合里添加的类型不同的话 比如 一开始是int类型 后面传入的参数是 String类型的话 java就会抛出异常 会报错
泛型的使用的话 泛型只能储存同一种类型的才能使用 如果不是同一类型的话 就会抛出异常
可以在<>中定义指定类型 规定了指定类型 调用时就不需要使用强制类型转换
4.8:学生选课---应用泛型管理课程2
需要继承父类 一开始子类中是不可以使用无参构造方法 需要在父类中 先定义一个无参器 子类中才能使用无参构造方法 泛型不能使用基本数据类型 需要使用基本类型的包装类 才不会报错
再去调用方法 就可以打印输出 如果不是的话 就会报错
4.9:学生选课---通过Set集合管理课程
Set接口以及其实现类 ---- HashSet
Set是元素无序并不可重复的集合 被称为集
HashSet---哈希集, 是Set的一个重要的实现类
Set是不能使用get方法来读取里面的数量 因为Set集合是没有序列的 只能使用for循环 或者迭代器来 把他循环遍历出来
主要是讲解了使用 Scanner 来获取学生在键盘上输入的数 然后在使用for循环来循环三次 遍历学生选的课程 在使用使用if 判断语句来 来判断是否输入的数 和相应的课程是否一直 使用equals来 判断是否一直 然后再调用方法 打印输出
Set中,添加某个对象 ,无论添加多少此 最终只会保留一个该对象(的引用) 并且,保留的是第一次添加的那一天
第五章java中的集合框架(中)
5.1:Map&HashMap简介
Map接口 跟前两种的不同的是 前面两种一个一个出现的 Map接口是成对出现的
Map接口
Map提供了一种映射关系 ,其中的元素是以键值对(key-value)形式储存的 ,能够实现根据key快熟查询value
Map中的键值对以Entry类型的对象实例形式存在
键(key)不可重复的 value值是可以的
每个键最多只能映射一个值 (value)
Map接口提供了分别返回key值集合 ,value值集合以及Entry(键值对)集合得方法
Map也是一样支持泛型的 形式如下 Map(k,v)
HashMap类
HashMap 是Map得一个重要的实现类 ,基于哈希表实现
HashMap中得Entry对象是无序排列得
Key值为null得映射 (key值不可重复)
5.2:学生选课---使用Map中添加学生
显示创造一个Scanner对象来获取学生从键盘中输入的值 在使用for循环来遍历 再使用get方法来哎获取 学生的id 在使用for循环来判断是学生输入的数 是否为空 如果为空的话 就是用next获取学生输入的名字 再new对象来创建一个新的对象 需要传入两个参数 也是键值对 一个是传入一个 int类型和一个String类型 然后储存学生的信息
ketSet方法 返回Map中的所有“键”的Set集合
遍历keySet,取得每一个键 ,再调用方法来取得每一个间的value
最终 Set集合是没有顺序的
5.3:学生选课---删除Map中的学生
还是一样 先创建一个Scanner来获取学生中键盘中输入的值 在使用if语句来判断是否有学生的信息 还是跟Set一样使用remove来删除指定信息 先是运行前面的操作 如果显示有学生的信息 就使用remove语句来删除学生的信息
5.4:学生选课---修改Map中的学生
还是一样 先是创建一个Scanner来获取学生从键盘中输入的值 使用while循环来 然后使用next方法 再是使用if语句来判断是否为空 如果为空的话 就打印输出 如果显示没有的话 就需要创建一个学生id 就需要提供新的已经存在的学生姓名 再是使用Scanner来获取键盘上输入的值 调用put方法来修改信息
第六章java中的集合框架(下)
6.1:学生选课---判断List中课程是否存在
显示使用get方法选择指定位置是否是该课程 使用cantains方法来判断是否包含该课程 如果是的话就打印 然后再输出是否有相应课程 再看情况打印出 true或者false
6.2:学生选课---判断Set中课程是否存在
先是new一个对象 然后再是创建一个Scaner获取从键盘中输入的值 再使用for循环来遍历 再是时使用next方法来到下一个 使用cantains方法来判断是否包含该课程
6.3:学生选课---获取List中课程的位置
获取课程的位置是需要通过indexOf方法来获取某元素的位置
先是使用if语句判断 然后再通过indexOf方法来获取某元素的位置 括号中输入你想获取课程的索引位置 然后再依次输出
6.4:学生选课---判断Map中是否包含指定的键值对
再Map中使用containsKey()方法来判断是否包含某个Key值 用containsValue()方法 ,来判断是否包含某个Value值 还是一样创建一个Scaner的对象 获取学生从键盘中输入的值 然后再是使用if语句来判断从键盘上输入的id是否存在 获取键盘中输入的id 如果存在的话 就依次输出打印
6.5:学生选课---Collections工具类
Collections工具类 是java集合框架中,用于操作对象的工具类 也是java集合框架的成员
其中有sort(排序)方法
泛型是不能使用基本数据类型的 如果使用的话就会报错 需要使用相应的包装类
需要插入十个100以内的不重复的整数 需要使用for循环来操作 为了保证不重复需要嵌套do...wheil循环 为了do...wheil循环中保证其中的数不重复 需要使用contains来处理
添加成功后需要使用foreach循环来去迭代每一个元素 然后打印输出 调用cCoolections的sort方法 ()括号内需要传入你想排序的变量名 然后再主方法new对象 然后调用方法Sort方法 再输出 这样的话就先排序好的顺序
6.6:学生选课---尝试对学生序列排序
如果使用sort方法的话 跟之前一样使用的话 就会报错 会爆出不适用于该参数 sort方法是需要必须实现Comparable接口
6.7:Comparable接口
在java中想要排序 需要两个对象是可以比较的 Comparable -----默认比较规则 Comparator 临时比较规则
Comparable接口----可比较的
实现该接口表示:这个类的实例可以比较大小,可以进行自然的排序
定义了默认的比较规则
其实现类需要实现compareTo()方法
compareTo()方法返回证书表示大,负数表示小 0表示相等
Comparator接口 比较工具接口
用于定义临时的比较规则 ,而不是默认的比较规则
其实现类需要实现compare()方法
Comparator和Comparable都是java集合框架的成员
6.8:学生选课---实现学生序列排序
需要实现Comparable接口 需要设为一样的泛型 需要使用相应的方法 如果小的话 就会输出正整数 如果大的话 就会输出负整数 如果相等的话就会输出0 然后先创建一个对象 要把名字改为字符串类型 id需要改成一千以内的正整数 再是调用该方法 然后输出 就会输出该结果 输出出来的 都是按照id的正整数来排列的 排序规则是 先数字后字母 数字0~9字母a~z的顺序 数字是先从第一位数字来排序的
相关文章:
学生选课系统基础版
第四章java中的集合框架 4.1:java中的集合框架概述 1.java概念与作用 现实中很多事物凑在一起都是集合 如购物车是商品的集合 军队呢 是军人的集合 学校是学生的结合 数学中的集合: 具有共同属性的事物的总体 java中的集合类呢 跟数学的集…...
redis no-appendfsync-on-rewrite
no-appendfsync-on-rewriteyes 当用户请求写入redis的时候,这部分数据只是保存在内存中,主线程并不会马上对此数据进行 aof刷盘(而是根据aof刷盘的频率由子线程进行同步),这样子不会阻塞但是会导致数据丢失no-appendfs…...
Spring Cloud Gateway2之路由详解
Spring Cloud Gateway路由 文章目录 1. 前言2. Gateway路由的基本概念3. 三种路由1. 静态路由2. 动态路由1. 利用外部存储2. API动态路由 3. 服务发现路由(自动路由)3.1. 配置方式3.2 自动路由(服务发现)原理核心源码GatewayDiscoveryClientAutoConfigur…...
阿里云RDS关系型数据库详细介绍_多版本数据库说明
阿里云RDS关系型数据库大全,关系型数据库包括MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等,NoSQL数据库如Redis、Tair、Lindorm和MongoDB,阿里云百科分享阿里云RDS关系型数据库大全: 目录 阿里云RDS关系型数据库大全 …...
Vue中的数据绑定
一、v-bind单向数据绑定 单向数据绑定中,数据只能由data流向页面。 v-bind:属性名"data变量" 或简写为 :属性名"data变量" 我们修改data中的iptvalue值,页面input框中的value值改变。 而我们修改input框中的value值࿰…...
前后端分离计算机毕设项目之基于SpringBoot的旅游网站的设计与实现《内含源码+文档+部署教程》
博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…...
[JAVAee]Spring拦截器
适用场景 像是页面的登录验证处理,权限校验,登录日志的处理. 实现步骤 创建⾃定义拦截器,实现 HandlerInterceptor 接⼝的 preHandle(执⾏具体⽅法之前的预处理⽅法.将⾃定义拦截器加⼊ WebMvcConfigurer 的 addInterceptors ⽅法中. 下面以登录验证为例,实现拦…...
【nvm】Node Version Manager(NVM)安装配置以及使用(WIN版)
NVM 包管理工具 安装 访问NVM-Windows的GitHub页面:点击nvm-setup.exe。 根据提示进行下一步,文件位置选择自定义位置 验证安装是否成功 nvm version 。如果成功,它将显示NVM的版本号。 使用 nvm list available查看所有的可以被下载…...
【微服务】七. http客户端Feign
7.1 基于Feign远程调用 RestTimeplate方式调用存在的问题 先来看以前利用RestTemplate发起远程调用的代码: String url "http://userservice/user"order.getUserId(); User user restTemplate.getForObject(url,User.class);存在下面的问题…...
【Spring Boot 源码学习】OnWebApplicationCondition 详解
Spring Boot 源码学习系列 OnWebApplicationCondition 详解 引言往期内容主要内容1. getOutcomes 方法2. getMatchOutcome 方法3. isWebApplication 方法3.1 isServletWebApplication 方法3.2 isReactiveWebApplication 方法3.3 isAnyWebApplication 方法 总结 引言 上篇博文带…...
力扣之二分法
今天,学习了二分法,详细内容见代码随想录 (programmercarl.com),讲得十分好。 力扣之35. 搜索插入位置 - 力扣(LeetCode)。 class Solution { public:int searchInsert(vector<int>& nums, int target) {in…...
css图形化理解--扭曲函数skew()
transform: skewX(30deg);transform: skewY(45deg);transform: skew(30deg,45deg);transform: skewX(angleX);transform: skewY(angleY);transform: skew(angleX,angleY); 是CSS中的一个2D变换方法,它用于对元素沿X轴、Y轴进行倾斜变换。其中,angle表示倾…...
八、互联网技术——物联网
文章目录 一、智慧物联案例分析二、M2M技术三、数据保护综合案例分析一、智慧物联案例分析 智能物流是一种典型的物联网应用。一个物流仓储管理系统架构如下图所示: [问题1] 图中的三层功能:仓库物品识别、网络接入、物流管理中心,分别可对应到物联网基本架构中的哪一层? …...
聊聊MySQL的聚簇索引和非聚簇索引
文章目录 1. 索引的分类1. 存储结构维度2. 功能维度3. 列数维度4. 存储方式维度5. 更新方式维度 2. 聚簇索引2.1 什么是聚簇索引2.2 聚簇索引的工作原理 3. 非聚簇索引(MySQL官方文档称为Secondary Indexes)3.1 什么是非聚簇索引3.2 非聚簇索引的工作原理…...
python之subprocess模块详解
介绍 subprocess是Python 2.4中新增的一个模块,它允许你生成新的进程,连接到它们的 input/output/error 管道,并获取它们的返回(状态)码。 这个模块的目的在于替换几个旧的模块和方法。 那么我们到底该用哪个模块、哪个…...
第10讲:Vue组件的定义与注册
定义组件 1. 在程序的 components 目录下新建一个名为 Child.vue 的文件 2. 在文件内键入如下代码 <template><div>Child</div> </template> <script> export default {name: Child } </script>新建的 Child .vue 文件即为我们定义的组件…...
Pycharm操作git仓库 合并等
菜单 Git CommitPushUpdate ProjectPullFetchMergreRebase 查询 查询分支 查询本地所有分支 # 查询本地分支 git branch# 查询远程分支 git branch -rPycharm查看当前分支 步骤: Git->Branches 哈喽,大家好,我是[有勇气的牛排]&…...
Flink+Doris 实时数仓
Flink+Doris 实时数仓 Doris基本原理 Doris基本架构非常简单,只有FE(Frontend)、BE(Backend)两种角色,不依赖任何外部组件,对部署和运维非常友好。架构图如下 可以 看到Doris 的数仓架构十分简洁,不依赖 Hadoop 生态组件,构建及运维成本较低。 FE(Frontend)以 Java 语…...
windows 任务计划自动提交 笔记到github 、gitee
一、必须有个git仓库托管到git上。 这个就不用说了,自己在github或者码云上新建一个仓库就行了。 二、创建自动提交脚本 这个bat脚本是在windows环境下使用的。 注意:windows定时任务下 调用自动提交git前,必须先进入该git仓库目录&#x…...
闭包和装饰器
#闭包的作用 #全局变量有被修改的风险,代码在命名空间上不够干净整洁 #第一种,不使用闭包的场景 account_amount0 def atm(num,depositTrue):global account_amountif deposit:account_amountnumprint(f"存款:{num},账户余额…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
