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…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
「Java基本语法」变量的使用
变量定义 变量是程序中存储数据的容器,用于保存可变的数据值。在Java中,变量必须先声明后使用,声明时需指定变量的数据类型和变量名。 语法 数据类型 变量名 [ 初始值]; 示例:声明与初始化 public class VariableDemo {publi…...
uni-app学习笔记二十七--设置底部菜单TabBar的样式
官方文档地址:uni.setTabBarItem(OBJECT) | uni-app官网 uni.setTabBarItem(OBJECT) 动态设置 tabBar 某一项的内容,通常写在项目的App.vue的onLaunch方法中,用于项目启动时立即执行 重要参数: indexnumber是tabBar 的哪一项&…...
