学生选课系统基础版
第四章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},账户余额…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
