首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

01--图解数据结构之数组实现集合

数组是一种线性的数据结构 优点:定点查询--速度快 缺点:长度固定,操作不便 注:集合的基类见第一篇:图解数据结构之开篇+集合基类 一个数组.png 一、java数组的使用 /** * 作者...= size - 1) { sb.append(", "); } } sb.append("]"); 2.定点添加元素: 思路:定点后的所有元素后移一位...,空出顶点位,让待添加元素入驻 数组定点添加.png 添加方法实现: @Override public void add(int index, T el) { if (size == datas.length...Make sure index size"); } //从最后一个元素开始,到定点位置元素,后移一位 for (int i = size-1; i...思路:从删除元素索引的下一位开始到结尾,依次左移 数组定点移除.png @Override public T remove(int index) { if (index < 0 || index

53740
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    看得见的数据结构Android版之数组表(数据结构篇)

    4.同样,表是一种抽象,也可以定义你眼中的表,并为它附上add(),get(),set(),remove()等功能 5.其实Java的ArrayList实现了List这个抽象接口 4.数组表结构:本文要务...一、定义自己的表结构 由于Java用List,为了不混淆,取了个新名字叫Chart 1.定义表的接口 也就是说说你的表能干嘛用(接口方法最好注释非常清晰) /** * 作者:张风捷特烈...(CRUD) 1.定点添加元素: 看一下操作图(将在下一篇:视图篇完成):默认添加到尾部 思路:定点后的所有元素后移一位,空出顶点位,让待添加元素入驻 紫色框代表空的数组位,中间填充的是表中的实际元素...也没有什么高大上的,就是一个篮子装不下了,装个更大的篮子装而已 1.扩容与缩容方法的实现 /** * 扩容/缩容 * * @param newCapacity 新容量 */ private...,还有其他操作可以自定义接口,自己实现, 不过不管多么复杂的操作都是以上操作的组合而已。

    25130

    看得见的数据结构Android版之表的数组实现(数据结构篇)

    老和尚说:"好好学习,天天向上,乐于助人,诚信友善" 这里"圣人"便是一种抽象,"好好学习,天天向上,乐于助人,诚信友善"便是"圣人"的"条件(功能)", 小和尚按照这么做了,他就是老和尚眼中的"圣人"...4.同样,表是一种抽象,也可以定义你眼中的表,并为它附上add(),get(),set(),remove()等功能 5.其实Java的ArrayList实现了List这个抽象接口 4.数组表结构:本文要务...(CRUD) 1.定点添加元素: 看一下操作图(将在下一篇:视图篇完成):默认添加到尾部 思路:定点后的所有元素后移一位,空出顶点位,让待添加元素入驻 紫色框代表空的数组位,中间填充的是表中的实际元素...也没有什么高大上的,就是一个篮子装不下了,装个更大的篮子装而已 数组的扩容与缩容 1.扩容与缩容方法的实现 /** * 扩容/缩容 * * @param newCapacity 新容量...,还有其他操作可以自定义接口,自己实现, 不过不管多么复杂的操作都是以上操作的组合而已。

    41010

    从零开始学 Web 之 jQuery(五)操作元素其他属性,为元素绑定事件

    如果我们在设置为原来宽高2倍的时候,就要先把获取的宽高转换成数字类型,再乘以2,这样操作比较麻烦,有没有简单的方法呢?...2、方法二 元素.width(属性值或者数字); 元素.height(属性值或者数字); 1、jQuery中用以上方式可以获取和设置元素的宽高。 2、当没有参数的时候是获取元素的宽高属性。...3、当设置参数为 200 或者 200px的时候是设置元素的宽高为 200px。 4、以上方法不仅可以获取行内式元素的宽高,也可以获取嵌入式写法元素的宽高。...4、方式四:(delegate方法) 语法:(父元素替子元素绑定事件) 父元素.delegate("子元素","事件名",事件处理函数); 示例: // 为div下p标签绑定点击事件 $("#dv")....语法: 父元素.on("事件名", "子元素", 事件处理函数); 示例: // 为div下p标签绑定点击事件 $("#dv").on("click", "p", function () { //.

    59640

    Java总结之容器家族--Collection

    容器接口子类及方法.png ---- 第一节:List接口 List:列表,顾名思义是一种表结构,核心方法: 按索引插入元素 void add(int var1, E var2) 按索引删除元素...Set的操作比较少,基本上也就是Collection传下来的方法 Set一般基于Map来实现:HashSet、LinkedHashSet、TreeSet的特性,根本上是HashMap、LinkedHashMap...、TreeMap的特性 ---- 1.HashSet HashSet内部有一个HashMap map成员变量,增删实际上是使用map的方法 按照哈希的顺序:hashCode(),...,源码少得可怜,基本上都是调用父类(HashSet)的构造方法 基于一个由链表实现的哈希表,保留了元素插入顺序 底层实现:LinkedHashMap ?...每次从优先队列中取出来的元素要么是最大值或最小值(最大堆/最小堆) Collection的简单总结就酱紫 ---- 后记、 1.声明: 1----本文由张风捷特烈原创,转载请注明 2---

    79820

    看得见的数据结构Android版之表的数组实现(视图篇)

    ,才变得优雅的) 也许无法一步想到位,但可以先实现,然后再优化,我就喜欢这种一波带走的感觉 注意点:downX和downY要相对于canvas的坐标系,所以要偏移一下 private OnCtrlClickListener...数组体现.png ---- 4.绘制表结构 根据mArrayBoxes的大小,绘制出mArrayBoxes里面的所有元素。 绘制单体在前言篇已经给出,这里只是加上了偏移量,应该不难理解。...,调用了view层的方法,实现操作与视图分离 1.增加操作: /** * 视图的数据操作接口方法--添加 * * @param data 数据 */ public void addData(...定点添加.gif ---- 2.查询和更新操作 /** * 视图的数据操作接口方法--根据id查询操作 * @param index * @return */ public E findData...定值查询获取索引.gif ---- 3.删除操作: 1)删除的核心方法: /** * 视图的数据操作接口方法--移除末尾 */ public void removeData() { if (

    69320

    【Java 进阶篇】JQuery 事件绑定:`on` 与 `off` 的奇妙舞曲

    on:事件的绑定大师 首先,让我们认识一下 on,这位事件绑定的大师。on 方法的作用是为被选中的元素绑定一个或多个事件处理函数。这个方法支持多种用法,让我们逐一揭开它的神秘面纱。...当鼠标悬停或按钮被点击时,都会触发相应的回调函数。 事件代理 有时候,我们需要在动态生成的元素上绑定事件。这时候,事件代理就能派上用场了。...事件代理通过将事件绑定到父元素上,然后利用事件冒泡的原理,在父元素上捕获事件并判断具体触发事件的子元素。 元素上,但指定了只有 li 元素被点击时才触发回调函数。...然后,通过 off 方法解绑了点击事件。这样,鼠标悬停事件仍然会被触发,但点击事件不再响应。 解绑所有事件 如果你想彻底解绑所有类型的事件,可以调用 off 方法时不传递任何参数。 <!

    19230

    如何让浏览器自动播放网页视频

    有些视频网站,网页打开后,并不会自动播放视频,需要人工点击视频或者播放器的播放按钮,才能进入视频播放状态。有没有办法一打开页面就自动播放视频呢?下面我们就来分析研究一下。...图片        首先使用浏览器的开发者工具查看,原来播放器是一个video元素,首先尝试一下直接点击这个veido元素,是否可以触发视频播放。...图片        在木头浏览器项目管理器中,创建一个点击元素步骤,添加点击目标为video元素。点击单步测试,发现页面并没有动静,视频也没有播放。...这说明video元素并没有绑定点击事件,点击元素无效(此步骤可省略)。图片        看来有必要使出我们的杀手涧,控制鼠标指针移动到播放器上方,再点击鼠标左键。...图片        至此,项目已经可以实现自动点击播放器播放视频了,保存项目文件为“视频点击.mot”。

    1.2K40

    「JS高级」面向对象编程

    ,先看子类有没有这个方法,如果有就先执行子类的; 继承中,如果子类里面没有,就去查找父类有没有这个方法,如果有,就执行父类的这个方法(就近原则); 如果子类想要继承父类的方法,同时在自己内部扩展自己的方法...点击 + 号, 可以添加 tab 项和内容项. 点击 x 号, 可以删除当前的tab项和内容项....双击tab项文字或者内容项文字可以修改里面的文字内容 3.2案例准备 获取到标题元素 获取到内容元素 获取到删除的小按钮 x号 新建js文件,定义类,添加需要的属性方法(切换,删除,增加,修改) 时刻注意...this的指向问题 3.3切换 为获取到的标题绑定点击事件,展示对应的内容区域,存储对应的索引: this.lis[i].index = i; this.lis[i].onclick = this.toggleTab...x绑定点击事件: this.remove[i].onclick = this.removeTab; 获取到点击的删除按钮的所在的父元素的所有,删除对应的标题与内容: removeTab(e) {

    1.9K10

    JS手撕(七) 事件总线

    事件总线其实就是发布订阅模式的一种实现。 学习JS的话,就一定会接触到事件的概念。比如给一个按钮绑定点击事件,绑定事件后,点击按钮会触发回调函数。...用发布订阅的说法来讲就是:给按钮绑定点击事件就是让按钮订阅点击事件,点击按钮就会发布事件,就会触发绑定事件时的回调函数。 实现 开始写之前,先需要分析一下解题思路,方便后面一马平川(假)。...这里使用对象的形式而不是使用数组,是因为一个事件应该可以有多个回调,即该对象的键是事件名称,值是事件对应的回调函数数组。 订阅事件 订阅事件实现原理就是:会先判断有没有该对象的回调。...如果有就会通过push方法来添加新的回调,没有则赋值为数组再添加回调。...如果都直接使用push方法的话,因为第一次添加回调的时候,该事件还没有回调,所以此时的值是undefined,而不是数组,调用push方法的时候会报错。

    76310

    【Java 进阶篇】深入理解 JQuery 事件绑定:标准方式

    当按钮被点击时,回调函数内的代码就会执行,弹出一个提示框。 标准方式:事件代理 有时候,我们需要在动态生成的元素上绑定事件,这时候事件代理就派上用场了。...事件代理是一种委托机制,通过将事件绑定到父元素上,从而实现对子元素的事件监听。这对于大型应用程序和动态内容非常有用。 元素上,但指定了只有 li 元素被点击时才触发回调函数。...这样,即使在页面加载完成后动态添加了新的列表项,它们仍然会受到事件的监听。 标准方式:多个事件类型 on 方法不仅可以绑定单一的事件类型,还可以同时绑定多个事件类型。...通过将事件绑定到父元素上,然后利用事件冒泡原理,在父元素上捕获事件并判断具体触发事件的子元素,从而减少了事件绑定的数量。 <!

    19740

    面向对象版tab 栏切换案例

    1.面向对象版tab 栏切换 1.1功能需求 点击 tab栏,可以切换效果. 点击 + 号, 可以添加 tab 项和内容项. 点击 x 号, 可以删除当前的tab项和内容项....双击tab项文字或者内容项文字可以修改里面的文字内容 1.2案例准备 获取到标题元素 获取到内容元素 获取到删除的小按钮 x号 新建js文件,定义类,添加需要的属性方法(切换,删除...,增加,修改) 时刻注意this的指向问题 1.3切换 为获取到的标题绑定点击事件,展示对应的内容区域,存储对应的索引 this.lis[i].index = i; this.lis...x绑定点击事件 this.remove[i].onclick = this.removeTab; 获取到点击的删除按钮的所在的父元素的所有,删除对应的标题与内容 removeTab...(index); // 根据索引号删除对应的li 和section remove()方法可以直接删除指定的元素 that.lis[index].remove(); that.sections

    2.2K30

    看得见的数据结构Android版之队列篇

    3.队列就像去动物园买票,先处理队列的头部,有新的人来了就后面排着去,慢慢等 4.还有一种很有意思的队列是循环队列,它是由于数组对头部操作的困难性,从而转变一种思路,让数组也能很好的实现队列结构,后面会仔细分析一下...队列综合操作.gif ---- 2.队列结构的简介: 队列是一种线性的数据结构 特性:尾部添加,头部取出 即先进先出FIFO 操作:enqueue入队 dequeue出队 getFront查看队首元素...只要有周期性就是循环,想成一个圈就狭隘了 1.循环队列实现的思路: 不就是想要知道队尾和队首是那个嘛,我标出来,维护一下给你不就行了吗 注意:这里的优势在于维护了队尾和队首的标示,插入尾和删除头都是定点...(当然你也可以用双链表...直接批件衣服,改都不用改) 注释的很清楚了,看着代码顺一下,或debug走一波,我就不赘述了 /** * 作者:张风捷特烈 * 时间:2018/8/17 0017:...boolean isEmpty() { return size == 0; } private class Node { private T el;//改节点上的元素

    47510

    看得见的数据结构Android版之单链表篇

    零、前言 1.前面用数组实现了表结构,也分析了数组表的局限性(头部修改困难) 2.今天来讲另一种数据结构:单链表,它是一种最简单的动态数据结构 3.链表有点像火车,一节拴着一节,想要在某节后加一节...,打开连接处,再拴上就行了 4.本例操作演示源码:希望你可以和我在Github一同见证:DS4Android的诞生与成长,欢迎star 1.留图镇楼:单链表的最终实现的操作效果: ?...单链表实现表结构.png 一、单链表结构的实现:SingleLinkedChart 1.表的接口定义在数组表篇,这里就不贴了 这里给出实现接口后的 SingleLinkedChart 以及简单方法的实现...第一步:找到2号车厢的前一节车厢--1号厢(target-1) 第二步:将1号厢(target-1)的链子(next)栓到T4车厢上,再把T4的链子栓到2号车厢(target) ?...定点添加操作.gif @Override public void add(int index, T el) { // index可以取到size,在链表末尾空位置添加元素。

    62910

    什么是定点数?

    在现实生活中,我们经常使用整数和小数,不知道你有没有思考过,这些数字在计算机中是如何存储的? 我们学习计算机知识时,经常听到「定点数」和「浮点数」,它们之间有什么区别?...于是人们想出一种方法,即约定计算机中小数点的位置,且这个位置固定不变,小数点前、后的数字,分别用二进制表示,然后组合起来就可以把这个数字在计算机中存储起来,这种表示方式叫做「定点」表示法,用这种方法表示的数字叫做...也就是说「定」是指固定的意思,「点」是指小数点,小数点位置固定即定点数名字的由来。 定点数如何表示数字? 既然定点数只是表示数字的一种方式,那试想,它可以表示整数吗?可以表示小数吗? 答案是肯定的。...但是有没有发现一个问题,我们约定了前 5 位表示整数部分,后 3 位表示小数部分,此时这个整数部分的二进制最大值只能是 11111,即十进制的 31,小数部分的二进制最大只能表示 0.111,即十进制的...总结如下: 定点数是在计算机中表示数字的一种方式,它既可以表示整数,也可以表示小数 在固定 bit 下,约定小数点的位置,然后把整数部分和小数部分分别转换为二进制,就是定点数的结果 受限于小数点的位置,

    2.4K10

    面向对象版tab 栏切换

    1.功能需求 点击 tab栏,可以切换效果. 点击 + 号, 可以添加 tab 项和内容项. 点击 x 号, 可以删除当前的tab项和内容项....双击tab项文字或者内容项文字可以修改里面的文字内容 2.案例准备 获取到标题元素 获取到内容元素 获取到删除的小按钮 x号 新建js文件,定义类,添加需要的属性方法(切换,删除...,增加,修改) 时刻注意this的指向问题 3.切换 为获取到的标题绑定点击事件,展示对应的内容区域,存储对应的索引 this.lis[i].index = i; this.lis[i...x绑定点击事件 this.remove[i].onclick = this.removeTab; 获取到点击的删除按钮的所在的父元素的所有,删除对应的标题与内容 removeTab(e)...(index); // 根据索引号删除对应的li 和section remove()方法可以直接删除指定的元素 that.lis[index].remove(); that.sections

    2K30

    面向对象版tab 栏切换

    1、功能需求 点击 tab栏,可以切换效果. 点击 + 号, 可以添加 tab 项和内容项. 点击 x 号, 可以删除当前的tab项和内容项....x号 新建js文件,定义类,添加需要的属性方法(切换,删除,增加,修改) 时刻注意this的指向问题 3、切换 为获取到的标题绑定点击事件,展示对应的内容区域,存储对应的索引 this.lis...x可以删除当前的Ii选项卡和当前的section x是没有索引号的,但是它的父亲li有索引号,这个索引号正是我们想要的索引号 所以核心思路是:点击x号可以删除这个索引号对应的Ii和section...为元素的删除按钮x绑定点击事件 this.remove[i].onclick = this.removeTab; 获取到点击的删除按钮的所在的父元素的所有,删除对应的标题与内容 removeTab...(index);     // 根据索引号删除对应的li 和section   remove()方法可以直接删除指定的元素     that.lis[index].remove();     that.sections

    3.9K30
    领券