哈哈,距离上一次写博客已经快过去半个月了,这这这,好像有点慢啊,话不多说,开始我们的手写动态泛型数组 首先是我们自己写一个自己的动态数组类,代码如下所示: public class Array<E> { //成员变量:数据,大小 private E[] data; private int size; //构造函数,传入数组的容量capacity public Array(int capacity) { data=(E[])new Object[capacity]; size=0; } //无参…
手写队列: package dataStucture2.stackandqueue; import com.lt.datastructure.MaxHeap.Queue; import dataStucture2.array.MyDynamicArray; /** * 基于Java动态数组手写一个队列 * * * @param <E> */ public class MyArrayQueue<E> implements Queue<E> { // 基于数组 privat…
package dataStucture2.stack; import dataStucture2.array.MyDynamicArray; /** * 基于动态数组手写栈 * 设计时,栈中仅栈顶对用户可见 * * @param <E> */ public class MyArrayStack<E> implements Stack<E> { MyDynamicArray<E> array; //有参构造 public MyArrayStack(int c…
Code: package dataStucture2.stackandqueue; /** * 手写循环队列 * * @param <E> */ public class MyLoopQueue<E> implements Queue<E> { /* * 成员变量:泛型数组.两个指向变量.循环队列个数size */ private E[] data; private int front, tail; private int size; // 有参构造,初始化数组容量大…
一.概述 队列,又称为伫列(queue),是先进先出(FIFO, First-In-First-Out)的线性表.在具体应用中通常用链表或者数组来实现.队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作.队列的操作方式和堆栈类似,唯一的区别在于队列只允许新数据在后端进行添加. 在Java中队列又可以分为两个大类,一种是阻塞队列和非阻塞队列. 1.没有实现阻塞接口: 1)实现java.util.Queue的LinkList, 2)实现java.util.Abstra…
目录 1 测试用例 2 JS 数组去重4大类型 2.1 元素比较型 2.1.1 双层 for 循环逐一比较(es5常用) 2.1.2 排序相邻比较 2.2 查找元素位置型 2.2.1 indexOf 2.2.2 findIndex 2.3 元素是否存在型 2.3.1 includes 2.3.2 some 2.4 依托数据结构特性 2.4.1 Map 2.4.2 Set(ES6 最常用) 3 补充 1 测试用例 // 测试用例 const a = {}; const b = { c: 1 };…
在上一篇博客[教你如何使用Java手写一个基于数组的队列]中已经介绍了队列,以及Java语言中对队列的实现,对队列不是很了解的可以我上一篇文章.那么,现在就直接进入主题吧. 这篇博客主要讲解的是如何使用单链表实现一个简单版的队列.单向链表队列是属于非循环队列,同时队列的长度是不受限制的,也就是说添加数据的速度比拉取数据的速度快时,队列的长度是无限增长的.单链队列其本质就是一个链表,只不过是在获取或添加数据的时候跟普通的链表有所区别,队列在获取数据的同时也将该节点删除,并且每次获取数据都是从表头获…
手写动态代理主要原理: userDAO=(UserDAO)Proxy.newProxyinstance(classloader,interfaces[],new MyInvocationHandler(targer); userDAO.save(); public class AppMain { //上课老师的代码 public static void main(String[] args) { UserDAO userDAO = new UserDAO(); Object proxyObjec…
首先明白 动态代理和静态代理的区别: 静态代理:①持有被代理类的引用  ② 代理类一开始就被加载到内存中了(非常重要) 动态代理:JDK中的动态代理中的代理类是动态生成的.并且生成的动态代理类为$Proxy0 静态代理实例1.创建一个接口: package proxy; public interface People { public void zhaoduixiang()throws Throwable; } 2.创建一个实现类,张三,张三能够吃饭,张三可以找对象 package proxy;…
数组的定义 动态初始化 /* 数组:存储同一种数据类型的多个元素的容器. 定义格式: A:数据类型[] 数组名; B:数据类型 数组名[]; 举例: A:int[] a; 定义一个int类型的数组a变量 B:int a[]; 定义一个int类型的a数组变量 注意:效果可以认为是一样的,都是定义一个int数组,但是念法上有些小区别.推荐使用第一种. 如何对数组进行初始化呢? A:何谓初始化呢? 就是为数组开辟内存空间,并为每个数组元素赋予值 B:有几种方式呢? a:动态初始化 只指定长度,由系统给…