GDPU Java 天码行空8
文章目录
- (一)实验目的
- (二)实验内容和步骤
- 1、LinkedList 实现队列
- 💖 MyQueueDemo.java
- 💖 运行结果:
- 2、集合的嵌套遍历
- 💖 StudentDemo.java
- 💖 运行结果:
- 3、类型转换 + 排序
- 💖 Main.java
- 💖 运行结果
- 4、TreeSet集合排序
- 💖 SortDemo.java
- 💖 运行结果
(一)实验目的
1、掌握JAVA集合类中的Collection的特点及其应用情形;
3、掌握Collection、熟悉集合的特点及应用。
(二)实验内容和步骤
1、LinkedList 实现队列
仿照课堂练习的MyStack示例,使用LinkedList集合类实现一个先进先出的队列数据结构,可以往该结构中压入数据push()以及弹出数据pop(),并遵循先进入先出队的规则。创建该结构,并使用该结构,调用其方法,实现数据存入和取出并显示。
实验记录和问题:
💖 MyQueueDemo.java
import java.util.LinkedList;
import java.util.Queue;public class MyQueueDemo
{public static void main(String[] args){MyQueue<Integer> myQueue = new MyQueue<Integer>();// 入队操作myQueue.push(1);myQueue.push(2);myQueue.push(3);// 打印队列元素myQueue.print(); // 输出: [1, 2, 3]// 出队操作int element = myQueue.pop();System.out.println("出队元素为: " + element); // 输出: 出队元素为: 1// 再次打印队列元素myQueue.print(); // 输出: [2, 3]}
}class MyQueue<T>
{private LinkedList<T> storage = new LinkedList<T>();// 将指定的元素插入队尾public void push(T v){storage.add(v);}// 检索并移除此队列的头,如果队列为空,则返回 nullpublic T pop(){return storage.poll();}// 打印队列元素public void print(){System.out.println(storage.toString());}
}
💖 运行结果:

2、集合的嵌套遍历
现在计算机科学与技术系2022届共有5个班级,2个外包班,3个应用班,每个班都有不同的学生,外包1班有5个学生,计算机应用1班有3个学生,计算机应用2班有4个学生.遍历打印年级学生信息。
分析:用集合去存储并且遍历每个学生。最终选择ArrayList去存储
💖 StudentDemo.java
import java.util.ArrayList;class Student
{private String name;private int age;public Student(String name, int age){this.name = name;this.age = age;}public String getName(){return name;}public int getAge(){return age;}
}public class StudentDemo
{public static void main(String[] args){ArrayList<Student> students = new ArrayList<Student>();// 外包1班的学生students.add(new Student("外包1班 学生1", 20));students.add(new Student("外包1班 学生2", 21));students.add(new Student("外包1班 学生3", 22));students.add(new Student("外包1班 学生4", 23));students.add(new Student("外包1班 学生5", 24));// 计算机应用1班的学生students.add(new Student("计算机应用1班 学生1", 20));students.add(new Student("计算机应用1班 学生2", 21));students.add(new Student("计算机应用1班 学生3", 22));// 计算机应用2班的学生students.add(new Student("计算机应用2 学生1", 20));students.add(new Student("计算机应用2 学生2", 21));students.add(new Student("计算机应用2 学生3", 22));students.add(new Student("计算机应用2 学生4", 23));// 遍历打印学生信息for (Student student : students){System.out.println("学生姓名:" + student.getName() + ",学生年龄:" + student.getAge());}}
}
💖 运行结果:

3、类型转换 + 排序
键盘录入多个整型数据,以-1结束,按格式输出排序后的数据,输入格式要求如下:以逗号分隔整数,如:4,75,234,42,54. 输出排序后的结果为:4, 42, 54, 75, 234 。
- 用正则表达式分割字符串,得到字符串数组: split()方法
- 转换为整型集合:for循环将字符串数组中的元素遍历取出,加入到集合中
- 使用Collections工具类对集合进行排序
- 输出排序后的集合元素
💖 Main.java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;public class Main
{public static void main(String[] args){Scanner scanner = new Scanner(System.in);ArrayList<Integer> list = new ArrayList<Integer>();System.out.println("请输入整数,以-1结束:");while (true){String input = scanner.nextLine();if (input.equals("-1")){break;}String[] numbers = input.split(",");for (String number : numbers){int num = Integer.parseInt(number.trim());list.add(num);}Collections.sort(list);for (int i = 0; i < list.size(); i++){System.out.print(list.get(i));if (i < list.size() - 1){System.out.print(", ");}}}scanner.close();}
}
💖 运行结果

4、TreeSet集合排序
存储自定义对象并遍历:如果对象的成员变量值相同即为同一个对象,按照年龄进行从大到小进行排序。分别用自然排序,实现接口Comparator类,内部类三种方法实现
💖 SortDemo.java
import java.util.Comparator;
import java.util.TreeSet;class People
{private String name;private int age;public People(String name, int age){this.name = name;this.age = age;}public String getName(){return name;}public int getAge(){return age;}@Overridepublic boolean equals(Object o){if (this == o)return true;if (o == null || getClass() != o.getClass())return false;People people = (People) o;return age == people.age;}@Overridepublic int hashCode(){return age;}
}// 自然排序
class StudentNaturalComparator implements Comparator<People>
{@Overridepublic int compare(People s1, People s2){return s2.getAge() - s1.getAge();}
}public class SortDemo
{public static void main(String[] args){
// TreeSet<People> peoples = new TreeSet<People>(); // 报错 cannot be cast to java.lang.ComparableTreeSet<People> peoples = new TreeSet<People>((o1, o2) -> o1.getAge() - o2.getAge());// 添加学生对象peoples.add(new People("Alice", 20));peoples.add(new People("Bob", 22));peoples.add(new People("Charlie", 20));peoples.add(new People("David", 21));// 自然排序System.out.println("自然排序:");for (People people : peoples){System.out.println(people.getName() + ", " + people.getAge());}// 实现Comparator接口TreeSet<People> peoplesComparator = new TreeSet<People>(new StudentNaturalComparator());peoplesComparator.add(new People("Alice", 20));peoplesComparator.add(new People("Bob", 22));peoplesComparator.add(new People("Charlie", 20));peoplesComparator.add(new People("David", 21));System.out.println("\n实现Comparator接口:");for (People people : peoplesComparator){System.out.println(people.getName() + ", " + people.getAge());}// 内部类TreeSet<People> peoplesInnerClass = new TreeSet<People>(new Comparator<People>(){@Overridepublic int compare(People s1, People s2){return s2.getAge() - s1.getAge();}});peoplesInnerClass.add(new People("Alice", 20));peoplesInnerClass.add(new People("Bob", 22));peoplesInnerClass.add(new People("Charlie", 20));peoplesInnerClass.add(new People("David", 21));System.out.println("\n内部类:");for (People people : peoplesInnerClass){System.out.println(people.getName() + ", " + people.getAge());}}
}
② 程序运行结果:
6、“aababcabcdabcde”,获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)
实验记录和问题:
① 撰写的程序代码为:CharacterStatisticsDemo.java
import java.util.*;public class CharacterStatisticsDemo
{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入字符串:");String input = scanner.nextLine();scanner.close();// 使用HashMap存储字符及其出现次数Map<Character, Integer> charCountMap = new HashMap<>();for (char c : input.toCharArray()){if (charCountMap.containsKey(c)){charCountMap.put(c, charCountMap.get(c) + 1);} else{charCountMap.put(c, 1);}}// 按照要求格式输出结果for (Map.Entry<Character, Integer> entry : charCountMap.entrySet()){System.out.print(entry.getKey() + "(" + entry.getValue() + ")");}}
}
💖 运行结果

相关文章:
GDPU Java 天码行空8
文章目录 (一)实验目的(二)实验内容和步骤1、LinkedList 实现队列💖 MyQueueDemo.java💖 运行结果: 2、集合的嵌套遍历💖 StudentDemo.java💖 运行结果: 3、类…...
《前端面试题》- JS基础 - 伪数组
第一次听说伪数组这个概念,听到的时候还以为是说CSS的伪类呢,网上一查,这东西原来还是个很常见的家伙。 何为伪数组 伪数组有两个特点: 具有length属性,其他属性(索引)为非负整数但是却不具备…...
TypeScript 基础语法
文章目录 1. 类型注解2. 接口(Interfaces)3. 类(Classes)4. 泛型(Generics)5. 枚举(Enums)6. 高级类型7. 模块8. 装饰器(Decorators)9. 映射类型(…...
服务器数据恢复—V7000存储raid5数据恢复案例
服务器数据恢复环境: P740AIXSybaseV7000存储阵列柜,阵列柜上有12块SAS机械硬盘(包括1块热备盘)。 服务器故障: 管理员在日常巡检过程中发现阵列柜中有一块磁盘发生故障,于是更换磁盘并同步数据࿰…...
扫雷 【搜索,哈希】
9.扫雷 - 蓝桥云课 (lanqiao.cn) #include<bits/stdc.h> using namespace std; #define int long long const int N1e5100; int n,m,res0; struct pt{int x,y,r; }; typedef pair<int,int> pii; map <pii,int> a;//炸雷的map,键是x,y,值是r map <pii,int&…...
如何在CentOS安装Firefox并结合内网穿透工具实现公网访问本地火狐浏览器
文章目录 1. 部署Firefox2. 本地访问Firefox3. Linux安装Cpolar4. 配置Firefox公网地址5. 远程访问Firefox6. 固定Firefox公网地址7. 固定地址访问Firefox Firefox是一款免费开源的网页浏览器,由Mozilla基金会开发和维护。它是第一个成功挑战微软Internet Explorer浏…...
LlamaIndex 组件 - Loading
文章目录 一、概览加载Transformations将所有内容放在一起抽象 二、文档/节点概览1、概念2、使用模式文件节点 三、定义和定制文档1、定义文档2、自定义文档2.1 元数据2.2 自定义id2.3 高级 - 元数据定制1)自定义LLM元数据文本2)自定义嵌入元数据文本3&a…...
再见了 wordpress !又一款简洁实用的个人博客,简单好使【文末领福利】
最近想搭一个简单的博客,不想要 wordpress 这类那么臃肿的系统,于是开源站找了下,看看有没有搭建简单,又好使的博客系统。于是还真找到了一个项目 -- VanBlog 简介 VanBlog 是一款简洁优雅的个人博客系统,它拥有很好性…...
【经典算法】LeetCode 136:只出现一次的数字(Java/C/Python3实现含注释说明,Easy)
个人主页: 进朱者赤 阿里非典型程序员一枚 ,记录平平无奇程序员在大厂的打怪升级之路。 一起学习Java、大数据、数据结构算法(公众号同名) 目录 题目描述思路及实现方式一:使用异或运算(推荐)思…...
ST-LINK Utility 4.6.0 下载安装及使用方法介绍
一、介绍 STM32 ST-LINK Utility是针对STM32全系芯片进行编程(读、写、擦除、选项字)的一款工具。 STM32 ST-LINK Utility软件主要的功能就是量产(批量下载代码的工具)。它也是比较实用的一个工具,当我们需要查看芯片F…...
【教程】cocos2dx资源加密混淆方案详解
1,加密,采用blowfish或其他 2,自定是32个字符的混淆code 3,对文件做blowfish加密,入口文件加密前将混淆code按约定格式(自定义的文件头或文件尾部)写入到文件 4,遍历资源目录,对每个文件做md5混淆,混淆原始串“相对路径”“文件名”混淆code, 文件改名并且移动到资源目录根…...
【Altium Designer 20 笔记】PCB板框
Altium Designer中设置PCB板框 PCB板框位于Mechanical1层 点击放置中的线条或使用其他绘图工具来绘制板框, 可以绘制矩形、圆形或其他形状的板框,确保板框是闭合的 注意:在绘制板框时,确保线条的起点和终点相连,形成一个闭合的图形。 快捷键D…...
el-date-picker限制只能选择当前时间前/后的时间(包含日期、时、分)
限制只能选择当前时间前/后的时间(包含日期、时、分) 首先需要给添加一个属性picker-options属性,然后在data中定义这个pickerOptions属性。 <el-date-pickerv-model"saveForm.startTime":picker-options"pickerOptions"format…...
MySQL 5.7 重置root用户密码
MySQL 5.7 重置root用户密码 如果你忘记了 MySQL 5.7 的 root 用户密码,可以按照以下步骤来重置密码: 1、停止 MySQL 服务。 # systemctl stop mysql.service 2、进入MySQL服务的安全启动模式 # mysqld_safe --skip-grant-tables &3、连接到 MyS…...
分布式数据库Polardb-X架构及特点
PolarDB-X架构 计算节点(Compute Node,CN)是系统的入口,采用无状态设计的sql引擎提供分布式路由和计算,包括SQL解析器、优化器、执行器等模块。负责数据分布式路由、计算及动态调度,负责分布式事务2PC协调…...
【spring】@Resource注解学习
Resource介绍 在Spring框架中,Resource 注解是一个JSR-250标准注解,用于自动装配(autowiring)Spring容器中的bean。Resource 注解可以用于字段、方法和方法参数上,以声明依赖注入。 Resource源码 Target({TYPE, FIE…...
【leetcode面试经典150题】43. 字母异位词分组(C++)
【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…...
计算机网络 Cisco路由器基本配置
一、实验内容 1、按照下表配置好PC机IP地址和路由器端口IP地址 2、配置好路由器特权密文密码“abcd+两位班内序号”和远程登录密码“star” 3、验证测试 a.验证各个接口的IP地址是否正确配置和开启 b.PC1 和 PC2 互ping c.验证PC1通过远程登陆到路由器上&#…...
Windows Edge 兼容性问题修复:提升用户体验的关键步骤
🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…...
Vue 3 性能飞跃:解析其性能提升的关键方面
文章目录 响应式系统优化静态树提升diff算法优化Tree Shaking优化Composition API事件缓存机制 响应式系统优化 Vue双向绑定原理 Proxy 相较于 Object.defineProperty 在性能上的优势主要体现在以下几个方面: 属性检测的全面覆盖: Object.defineProper…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
