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

中小型网站建设流程/济宁百度竞价推广

中小型网站建设流程,济宁百度竞价推广,wordpress 制作小工具,如何在台湾做企业网站我前面写了一个笔记,【java】设计一个类ArrayBox,比数组更灵活(增删元素时不用纠结长度变化的问题)----底层依旧是数组,不过可以自动的扩容,不用担心增加元素,而数组空间不足的问题。&#xff0…

我前面写了一个笔记,【java】设计一个类ArrayBox,比数组更灵活(增删元素时不用纠结长度变化的问题)----底层依旧是数组,不过可以自动的扩容,不用担心增加元素,而数组空间不足的问题。(但是它存在一个问题,就是增删的效率特别底下,因为它是不断的移动元素的位置进行调整)


所以,
我现在,用双向链表设计一个类LinkedBox,比数组的增删的效率更高
虽然有一个缺点,查找就比较不方便了


上述我说到的两个 类似数组 的类,都必须要有这四个功能:

  • 添加元素add()
  • 获取元素get()
  • 删除元素remove()
  • 查看元素个数size()

假设我给用户提供这两个类,ArrayBox和LinkedBox,我们给用户调用的方法名最好要一样,这样用户才好记忆

于是,先定义一个规范(就是接口)

Box.java

将ArrayBox和LinkedBox这两个类都继承于Box.java这个接口

package util;public interface Box {public boolean add(int element); //增加元素public int get(int index);//获取元素public int remove(int index);//删除元素public int size();//查看元素个数
}

再将ArrayBox.java中的ArrayBox来实现这个Box接口就好
在这里插入图片描述


再来把LinkedBox的代码写了,以下代码都放在util包中:

Node.java

先把双向链表的数据结构定义了

package util;public class Node {private Node prev;//上一个Node对象private int item;  //当前的数据private Node next;//下一个Node对象public Node(Node prev,int element,Node next){this.item = element;this.next = next;this.prev = prev;}public int getItem() {return item;}public Node getNext() {return next;}public Node getPrev() {return prev;}public void setItem(int item) {this.item = item;}public void setNext(Node next) {this.next = next;}public void setPrev(Node prev) {this.prev = prev;}
}

LinkedBox.java

package util;public class LinkedBox implements Box{//先定义头节点和尾节点的属性private Node first;private Node last;private int size = 0;//记录有效元素的个数//1.增加元素的方法public boolean add(int element) {//将element元素存入一个新的node里,挂在链表的尾端//      调用linkLast方法this.linkLast(element);//告知添加成功return true;}private void linkLast(int element){ //将element元素存入一个新的node里,挂在链表的尾端//获取链表的尾节点Node l = last;//创建一个新的Node对象,将新数据包装起来Node newNode = new Node(l,element,null);//再将新节点设置为尾节点last = newNode;if(l == null){first = newNode;}else{l.setNext(newNode);}//有效元素增加一个size++;}//2.获取元素的方法public int get(int index) {//调用一个方法,先检验index是否合法this.rangeCheck(index);//找寻index对应位置的那个Node对象,将对象中的数据据取出来//调用node方法Node targetNode = this.node(index);//返回index位置的值return targetNode.getItem();}private void rangeCheck(int index){       //检验index是否合法if(index < 0 || index > this.size){//参考数组的操作,自己定义一个异常(自己创建的类)来说明这个问题throw new BoxIndexOutOfBoundsException("index:" + index + ",Size" + size);}}private Node node(int index){  //找寻index对应位置的那个Node对象,将对象中的数据据取出来Node targetNode;//用来存储当前目标元素的对象if(index < (index>>1)){targetNode = first;for(int i = 0; i < index; i++){targetNode = targetNode.getNext();}}else{targetNode = last;for(int i = size-1; i > index; i--){targetNode = targetNode.getPrev();}}return targetNode;}//3.删除元素的方法public int remove(int index) {//检测index是否合法this.rangeCheck(index);//找到index位置的那个Node//调用node方法Node targetNode = this.node(index);//将要删除的元素保存下来,返回给用户int oldValue = targetNode.getItem();//删除当前元素的目标节点//调用this.unLink(targetNode);//有效元素减少一个size--;//返回被删元素return oldValue;}private void unLink(Node targetNode){if(targetNode.getPrev() == null){first = targetNode.getNext();}else{targetNode.getPrev().setNext(targetNode.getNext());}if(targetNode.getNext() == null){last = targetNode.getNext();}else{targetNode.getNext().setPrev(targetNode.getPrev());}targetNode.setNext(null);targetNode.setPrev(null);}//4.获取元素个数的方法public int size() {return this.size;}
}

BoxIndexOutOfBoundsException.java

package util;public class BoxIndexOutOfBoundsException extends RuntimeException{public BoxIndexOutOfBoundsException(){}public BoxIndexOutOfBoundsException(String msg){super(msg);//msg提供给父类}
}
http://www.lbrq.cn/news/1098991.html

相关文章:

  • 做网站的app/小吃培训机构排名前十
  • 网站开发 周期/搜狗搜索推广
  • 网站建设作业多少钱/百度网站首页网址
  • 营销网站的概念/百度智能云建站
  • 微信公众号影视网站怎么做/磁力蜘蛛
  • 网站注册域名位置/黑帽seo是什么意思
  • 上海快速建站/今日新闻 最新消息 大事
  • jsp做新闻网站/免费seo诊断
  • 网站建设目录结构doc/网络推广方案有哪些
  • 网页制作怎么插视频/广告优化师适合女生吗
  • 压铸东莞网站建设/东莞网站建设seo
  • 吉林省科瑞建设项目管理有限公司网站/对网站提出的优化建议
  • 网站源码网/国内免费域名注册网站
  • 做网站后端需要掌握什么技术/百度搜索排名优化哪家好
  • 厦门百度网站建设/自己建网站要多少钱
  • 免费ppt资源网站/南宁seo排名外包
  • 安徽论坛网站建设/广告多的网站
  • 政府网站建设工作存在的不足/百度网页版链接
  • 使用别人网站代码做自己的网站/搜索热门关键词
  • 网站排名恢复/网站技术解决方案
  • 宁波专业网站建设公司/近期的时事热点或新闻事件
  • html5做视频网站/企业线上培训平台
  • 大连做网站billionseo/搜索关键词优化
  • 全国做网站的公司有哪些/百度推广需要多少钱
  • 网站开发工程师月薪/企业网站推广优化公司
  • 商务网站建设的流程/重庆seo网络优化师
  • 郑州汉狮公司做网站/渠道推广费用咨询
  • 做国际网站多少钱/网络软文名词解释
  • 建筑网址大全网站/网站优化排名软件哪些最好
  • 宣传 网站建设方案/疫情排行榜最新消息
  • 深入解析MIPI C-PHY (二)C-PHY三线魔术:如何用6种“符号舞步”榨干每一滴带宽?
  • 大模型——上下文工程 (Context Engineering) – 现代 AI 系统的架构基础
  • 【每日算法】专题四_前缀和
  • [Python] -项目实战10- 用 Python 自动化批量重命名文件
  • 分布在内侧内嗅皮层(MEC)的带状细胞对NLP中的深层语义分析有什么积极的影响和启示
  • 使用pytorch创建模型时,nn.BatchNorm1d(128)的作用是什么?