当前位置: 首页 > news >正文

学生选课系统基础版

第四章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&#xff1a;java中的集合框架概述 1.java概念与作用 现实中很多事物凑在一起都是集合 如购物车是商品的集合 军队呢 是军人的集合 学校是学生的结合 数学中的集合&#xff1a; 具有共同属性的事物的总体 java中的集合类呢 跟数学的集…...

redis no-appendfsync-on-rewrite

no-appendfsync-on-rewriteyes 当用户请求写入redis的时候&#xff0c;这部分数据只是保存在内存中&#xff0c;主线程并不会马上对此数据进行 aof刷盘&#xff08;而是根据aof刷盘的频率由子线程进行同步&#xff09;&#xff0c;这样子不会阻塞但是会导致数据丢失no-appendfs…...

Spring Cloud Gateway2之路由详解

Spring Cloud Gateway路由 文章目录 1. 前言2. Gateway路由的基本概念3. 三种路由1. 静态路由2. 动态路由1. 利用外部存储2. API动态路由 3. 服务发现路由(自动路由)3.1. 配置方式3.2 自动路由&#xff08;服务发现&#xff09;原理核心源码GatewayDiscoveryClientAutoConfigur…...

阿里云RDS关系型数据库详细介绍_多版本数据库说明

阿里云RDS关系型数据库大全&#xff0c;关系型数据库包括MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等&#xff0c;NoSQL数据库如Redis、Tair、Lindorm和MongoDB&#xff0c;阿里云百科分享阿里云RDS关系型数据库大全&#xff1a; 目录 阿里云RDS关系型数据库大全 …...

Vue中的数据绑定

一、v-bind单向数据绑定 单向数据绑定中&#xff0c;数据只能由data流向页面。 v-bind:属性名"data变量" 或简写为 :属性名"data变量" 我们修改data中的iptvalue值&#xff0c;页面input框中的value值改变。 而我们修改input框中的value值&#xff0…...

前后端分离计算机毕设项目之基于SpringBoot的旅游网站的设计与实现《内含源码+文档+部署教程》

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&am…...

[JAVAee]Spring拦截器

适用场景 像是页面的登录验证处理,权限校验,登录日志的处理. 实现步骤 创建⾃定义拦截器,实现 HandlerInterceptor 接⼝的 preHandle&#xff08;执⾏具体⽅法之前的预处理⽅法.将⾃定义拦截器加⼊ WebMvcConfigurer 的 addInterceptors ⽅法中. 下面以登录验证为例,实现拦…...

【nvm】Node Version Manager(NVM)安装配置以及使用(WIN版)

NVM 包管理工具 安装 访问NVM-Windows的GitHub页面&#xff1a;点击nvm-setup.exe。 根据提示进行下一步&#xff0c;文件位置选择自定义位置 验证安装是否成功 nvm version 。如果成功&#xff0c;它将显示NVM的版本号。 使用 nvm list available查看所有的可以被下载…...

【微服务】七. http客户端Feign

7.1 基于Feign远程调用 RestTimeplate方式调用存在的问题 先来看以前利用RestTemplate发起远程调用的代码&#xff1a; String url "http://userservice/user"order.getUserId(); User user restTemplate.getForObject(url,User.class);存在下面的问题&#xf…...

【Spring Boot 源码学习】OnWebApplicationCondition 详解

Spring Boot 源码学习系列 OnWebApplicationCondition 详解 引言往期内容主要内容1. getOutcomes 方法2. getMatchOutcome 方法3. isWebApplication 方法3.1 isServletWebApplication 方法3.2 isReactiveWebApplication 方法3.3 isAnyWebApplication 方法 总结 引言 上篇博文带…...

力扣之二分法

今天&#xff0c;学习了二分法&#xff0c;详细内容见代码随想录 (programmercarl.com)&#xff0c;讲得十分好。 力扣之35. 搜索插入位置 - 力扣&#xff08;LeetCode&#xff09;。 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变换方法&#xff0c;它用于对元素沿X轴、Y轴进行倾斜变换。其中&#xff0c;angle表示倾…...

八、互联网技术——物联网

文章目录 一、智慧物联案例分析二、M2M技术三、数据保护综合案例分析一、智慧物联案例分析 智能物流是一种典型的物联网应用。一个物流仓储管理系统架构如下图所示: [问题1] 图中的三层功能:仓库物品识别、网络接入、物流管理中心,分别可对应到物联网基本架构中的哪一层? …...

聊聊MySQL的聚簇索引和非聚簇索引

文章目录 1. 索引的分类1. 存储结构维度2. 功能维度3. 列数维度4. 存储方式维度5. 更新方式维度 2. 聚簇索引2.1 什么是聚簇索引2.2 聚簇索引的工作原理 3. 非聚簇索引&#xff08;MySQL官方文档称为Secondary Indexes&#xff09;3.1 什么是非聚簇索引3.2 非聚簇索引的工作原理…...

python之subprocess模块详解

介绍 subprocess是Python 2.4中新增的一个模块&#xff0c;它允许你生成新的进程&#xff0c;连接到它们的 input/output/error 管道&#xff0c;并获取它们的返回&#xff08;状态&#xff09;码。 这个模块的目的在于替换几个旧的模块和方法。 那么我们到底该用哪个模块、哪个…...

第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查看当前分支 步骤&#xff1a; Git->Branches 哈喽&#xff0c;大家好&#xff0c;我是[有勇气的牛排]&…...

Flink+Doris 实时数仓

Flink+Doris 实时数仓 Doris基本原理 Doris基本架构非常简单,只有FE(Frontend)、BE(Backend)两种角色,不依赖任何外部组件,对部署和运维非常友好。架构图如下 可以 看到Doris 的数仓架构十分简洁,不依赖 Hadoop 生态组件,构建及运维成本较低。 FE(Frontend)以 Java 语…...

windows 任务计划自动提交 笔记到github 、gitee

一、必须有个git仓库托管到git上。 这个就不用说了&#xff0c;自己在github或者码云上新建一个仓库就行了。 二、创建自动提交脚本 这个bat脚本是在windows环境下使用的。 注意&#xff1a;windows定时任务下 调用自动提交git前&#xff0c;必须先进入该git仓库目录&#x…...

闭包和装饰器

#闭包的作用 #全局变量有被修改的风险&#xff0c;代码在命名空间上不够干净整洁 #第一种&#xff0c;不使用闭包的场景 account_amount0 def atm(num,depositTrue):global account_amountif deposit:account_amountnumprint(f"存款&#xff1a;{num}&#xff0c;账户余额…...

注册器模式

注册器模式 注册器模式&#xff08;Registry Pattern&#xff09;是一种设计模式&#xff0c;用于管理和维护对象的注册和检索。它允许您在运行时注册对象&#xff0c;并通过一个唯一的标识符或名称来检索这些对象。这种模式通常用于构建可扩展的、松耦合的系统&#xff0c;其…...

5SpringMVC处理Ajax请求携带的JSON格式(“key“:value)的请求参数

SpringMVC处理Ajax 参考文章数据交换的常见格式,如JSON格式和XML格式 请求参数的携带方式 浏览器发送到服务器的请求参数有namevalue&...(键值对)和{key:value,...}(json对象)两种格式 URL请求会将请求参数以键值对的格式拼接到请求地址后面,form表单的GET和POST请求会…...

学习笔记|ADC|NTC原理|测温程序|STC32G单片机视频开发教程(冲哥)|第十九集:ADC应用之NTC

文章目录 1.NTC的原理开发板上的NTC 2.NTC的测温程序编写3.实战小练总结课后练习 1.NTC的原理 NTC&#xff08;Negative Temperature Coefficient&#xff09;是指随温度上升电阻呈指数关系减小、具有负温度系数的热敏电阻现象和材料。该材料是利用锰、铜、硅、钴、铁、镍、锌…...

Redisson 集成SpringBoot 详解

一、引入依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.23.5</version></dependency> redison-spring-boot-starter依赖于与最新版本的spring-boot兼容…...

C# 下载模板文件 Excel

后端代码 [HttpGet("DownloadExcel")]public async Task<dynamic> DownloadExcel(string tmplName){var _fileName "导入表模板.xlsx";var filePath "Files\DownLoad\";var NewFile Path.Combine(filePath, tmplName);var stream new…...

如何做好sop流程图?sop流程图用什么软件做?

5.如何做好sop流程图&#xff1f;sop流程图用什么软件做&#xff1f; 建立标准作业程序sop已经成为企业进步和发展的必经之路&#xff0c;不过&#xff0c;很多刚刚开始着手搭建sop的企业并不知道要如何操作&#xff0c;对于如何做sop流程图、用什么软件做sop流程图等问题充满…...

JAVA编程题-求矩阵螺旋值

螺旋类 package entity; /*** 打印数组螺旋值类*/ public class Spiral { // 数组行private int row; // 数组列private int col; // 行列数private int size; // 当前行索引private int rowIndex; // 当前列索引private int colIndex; // 行开始索引private int rowStart; //…...

Python--入门

标识符 标识符由字母&#xff0c;数字&#xff0c;下划线_组成 第一个字符不能是数字&#xff0c;必须是字母或下划线 标识符区分大小写 关键字 关键字即保留字&#xff0c;定义标识符时不能使用关键字&#xff0c;python中的关键字如下图 注释 python中的单行注释用 # 多行注…...

STM32复习笔记(二):GPIO

目录 &#xff08;一&#xff09;Demo流程 &#xff08;二&#xff09;工程配置 &#xff08;三&#xff09;代码部分 &#xff08;四&#xff09;外部中断&#xff08;EXTI&#xff09; &#xff08;一&#xff09;Demo流程 首先&#xff0c;板子上有4个按键&#xff0c;…...

POJ 3264 Balanced Lineup 线段树 / 平方分割

一、题目大意 给出一个长度为 n&#xff08;n<50000) 数组 arr&#xff0c;进行Q次查询&#xff08;Q<200000&#xff09;&#xff0c;每次查询的内容为数组arr在 [L , R] 的切片的极差&#xff08;最大元素 - 最小元素&#xff09; 二、解题思路 1、线段树 区间极差…...

有需要做网站推广找我/谷歌seo网站运营

异常 Python内置的try…except…else…finally用来处理错误十分方便。出错时&#xff0c;会分析错误信息并定位错误发生的代码位置才是最关键的。程序也可以主动抛出错误&#xff0c;让调用者来处理相应的错误。但是&#xff0c;应该在文档中写清楚可能会抛出哪些错误&#xf…...

wordpress组合模板下载/百度网盘app官网

在《Android Studio的xml文件中shape标签的用法4-1》和 《Android Studio的xml文件中shape标签的用法4-2》中提到了shape标签的子元素的使用方法&#xff0c;通过这些子元素&#xff0c;可以实现对所绘图形的线条、颜色、大小等进行控制。shape标签的属性android:shape可以实现…...

龙岗做网站的/软件外包公司好不好

对于一幅好的设计作品来说&#xff0c;“连接”是至关重要的。无论要为团队成员提出反馈、跨App编辑&#xff0c;亦或是发送给技术团队、客户或整理成集&#xff0c;满足项目所需的灵活性都相关重要。在概念画板中&#xff0c;我们提供给大家多种画板尺寸、导出格式和分享作品的…...

ssh网站开发的书籍/谷歌引擎搜索入口

理解这个问题&#xff0c;就是pods在Kubernetes中怎么进行failover 在Kubernetes的work node上有kubelet&#xff0c;会负责监控该work node上的pods&#xff0c;如果有container挂掉了&#xff0c;它会负责重启 但是如果进程没有挂掉&#xff0c;只是hang住&#xff0c;或是死…...

海口网站开发/哪个推广网站好

HBase的数据结构及逻辑存储结构一、HBase的逻辑结构(1)store(2)列(3)列族(4)Row Key(5)Region二、使用步骤三、数据模型(1)Name Space(2)Region(3)Row(4)Column(5)Time Stamp(6)Cell一、HBase的逻辑结构 HBase的数据模型和数据库很类似&#xff0c;但底层的存储结构完全不同。 …...

网站功能模块图/佛山seo培训机构

1&#xff0c;为什么要使用自定义样式&#xff1a;当几个页面或者是几个控件长得都差不多的时候 我们就可以抽出一个样式2&#xff0c;怎么使用自定义样式使用自定义样式的的技巧&#xff0c;因为使用样式是用来提取公共部分内容。我创建一个View 把里面属性书写完成后&#xf…...