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

数据结构--JDK17新增语法和顺序表

一.yield关键字

用于switch语句上的case代码块的返回值

举例:

二.var关键字

作用:当类型名字较长时可以简化代码。

注意事项:

1.不能使用var来声明字段

2.不能使用var来声明方法参数

3.不能使用var来声明方法返回类型

4.使用时必须初始化,但不能初始化为null

三.密封类

之前讲过用final密封类,JDK17提供了一个新关键字sealed关键字来密封类

区别:该密封的类必须‘有子类继承(既要有子类),此外还提供了permits关键字来限制子类

还提供了non-sealed关键字给继承sealed修饰的父类的子类进行声明该子类可被任何类继承

举例:

四.instance关键字

五.顺序表

解释:顺序表使用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般采用数组存储,在数组上完成增删查改

注意:Arraylist底层是一段连续的空间,但不能通过对象下标访问

1.简单模拟实现:

public class Arraylist {public int array[];public int size;public Arraylist(int capacity){this.array =new int[capacity];}public boolean isFull(){return size==array.length;}private  void grow(){this.array= Arrays.copyOf(this.array,2*array.length);}public void checkpos(int pos){if (pos<0||pos>size){throw new PostException("下标异常!!!");}}public void checkpos2(int pos){if (pos<0||pos>=size){throw new PostException("下标异常!!!");}}public void checkempty(){if (size==0){throw new EmptyException("该列表为空");}}public void add(int num)throws EmptyException {if (isFull()){grow();}array[size]=num;size++;}public void add(int num,int pos){try {checkpos(pos);if (isFull()){grow();}for (int i = size; i > pos; i--) {array[i]=array[i-1];}array[pos]=num;size++;}catch (PostException e){e.printStackTrace();}}public boolean contains(int num){for (int i = 0; i < size; i++) {if (array[i]==num){return true;}}return false;}public int index(int num){try {checkempty();for (int i = 0; i < size; i++) {if (array[i]==num){return i;}}return -1;}catch (EmptyException e){e.printStackTrace();}return -1;}public int gets(int pos){try {checkempty();checkpos2(pos);return array[pos];}catch (EmptyException e){e.printStackTrace();}catch (PostException e){e.printStackTrace();}return -1;}public void set (int num, int pos){try {checkempty();checkpos2(pos);array[pos]=num;}catch (PostException e){e.printStackTrace();}catch (EmptyException e){e.printStackTrace();}}public void remove(int pos){try {checkempty();checkpos2(pos);for (int i = pos; i <size-1 ; i++) {array[i]=array[i+1];}size--;}catch (EmptyException e){e.printStackTrace();}catch (PostException e){e.printStackTrace();}}public void clear(){size =0;}public void display(){for (int i = 0; i < size; i++) {System.out.print(" "+array[i]);}}
}

2.Arraylist的使用

3.Arraylist下常用的方法

注意:

http://www.lryc.cn/news/592353.html

相关文章:

  • blender如何队列渲染多个工程文件的动画?
  • 集训Demo4
  • 本地部署 Kimi K2 全指南(llama.cpp、vLLM、Docker 三法)
  • 【playwright篇】教程(十六)[macOS+playwright相关问题]
  • ClickHouse物化视图避坑指南:原理、数据迁移与优化
  • IntelliJ IDEA大括号格式设置:换行改行尾
  • C#测试调用ServiceController类查询及操作服务的基本用法
  • vscode编辑Markdown文件
  • 【51】MFC入门到精通——MFC串口助手(一)---初级版(串口设置、初始化、打开/关闭、状态显示),附源码
  • el-date-picker 如何给出 所选月份的最后一天
  • 几款开源的安全监控与防御工具分享
  • 电脑装机软件一键安装管理器
  • 开源的大语言模型(LLM)应用开发平台Dify
  • 飞凌嵌入式亮相第九届瑞芯微开发者大会:AIoT模型创新重做产品
  • 【48】MFC入门到精通——MFC 文件读写总结 CFile、CStdioFile、CFileDialog
  • 源鉴SCA4.9︱多模态SCA引擎重磅升级,开源风险深度治理能力再次进阶
  • 面试150 克隆图
  • 写在 35 岁生日的时候
  • 面试150 被围绕的区域
  • vue2 面试题及详细答案150道(71 - 80)
  • vue2 面试题及详细答案150道(91 - 100)
  • C++:vector(3)
  • 基于 fetch + ReadableStream 流式输出 实现 AI 聊天问答
  • 平板可以用来办公吗?从文档处理到创意创作的全面测评
  • openinstall九周年:聚焦安全防御,护航业务持续增长
  • 涉及海量数据的查询SQL建议使用“数据库函数”封装并调用
  • TCP通讯开发注意事项及常见问题解析
  • 如何检查GitHub上可能潜在的信息泄漏
  • web开发-HTML
  • leetcode2_135.分发糖果