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…...
 
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> …...
 
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
 
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
 
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
 
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
 
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
