自定义队列和泛型
来源:互联网 发布:网络机顶盒电视没信号 编辑:程序博客网 时间:2024/06/04 22:40
自定义队列
1. 数组的优点与缺陷:
a>. 优点: 1. 方便管理同类型的数据
2. 搜索简单
b>. 缺陷 1. 数组长度固定,不能改变
2. 插入和删除数据不方便
2. 自定义数组的产生:对数组的改善,克服数组长度不能改变的缺陷,继承了数组搜索简单的优点
public class DifinitedQueue {private int length=0; int Array[]=new int [length]; public int getLength() { return length; } //增加public void add(int num) {int []Array_new=new int[length+1];for (int i=0;i<length;i++) {Array_new[i]=Array[i];}Array_new[length]=num;length++;//返还给原来的数组,间接的改变了数组长度Array=Array_new; }//插入public void insert(int a,int index) {int []Array_new=new int[length+1];// 待插入位置之前所有数组全部复制到新数组for (int i=0;i<index-1;i++) {Array_new[i]=Array[i];}// 插入数组Array_new[index-1]=a;// 待插入位置之后所有数组全部复制到新数组for(int i=index;i<length+1;i++) {Array_new[i]=Array[i-1];}System.out.println("插入后的数组为:");length++;//返还给原来的数组,间接的改变了数组长度Array=Array_new;}//删除public void delete(int index) {int []Array_new=new int[length-1]; int deletedNum;// 待删除位置之前所有数组全部复制到新数组for (int i=0;i<index-1;i++) {Array_new[i]=Array[i];}deletedNum=Array[index-1];// 待插入位置之后所有数组全部复制到新数组for(int i=index;i<length;i++) {Array_new[i-1]=Array[i];}//返还给原来的数组,间接的改变了数组长度System.out.println("删除的数字是"+deletedNum);Array=Array_new;length--;}//查public int get(int index) {System.out.println("找到了");return Array[index];}//改public boolean update(int index,int num) {try{Array[index]=num;System.out.println("修改成功");return true;}catch(Exception e){System.out.println("修改失败,索引下标越界!");return false;}}public static void main(String[] args) { DifinitedQueue difinitedQueue = new DifinitedQueue();}}
泛型
定义:
1. 在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。(这是当今较常见的定义)
2. 在程序编码中一些包含参数的类。其参数可以代表类或对象等等。(人们大多把这称作模板)不论使用哪个定义,泛型的参数在真正使 用泛型时都必须作出指明。
格式: e.g Map<K,V>
要点:
1>> 泛型都是引用类型 ,是堆对象
2>> 泛型类在创建对象时,可以赋任何引用类型
如:
8种基本类型: int long short double float char byte boolean
对应的引用类型: Integer Long Short Double Float Char Byte Boolean + String + 自定义引用类型
自定义队列和泛型的综合应用
public class VariableArray<T> { private int length=0; Object Array[]=new Object [length]; public int getLength() { return length; } //增加public void add(T num) {Object []Array_new=new Object[length+1];for (int i=0;i<length;i++) {Array_new[i]=Array[i];}Array_new[length]=num;length++;//返还给原来的数组,间接的改变了数组长度Array=Array_new; }//插入public void insert(T a,int index) {Object []Array_new=new Object[length+1];// 待插入位置之前所有数组全部复制到新数组for (int i=0;i<index-1;i++) {Array_new[i]=Array[i];}// 插入数组Array_new[index-1]=a;// 待插入位置之后所有数组全部复制到新数组for(int i=index;i<length+1;i++) {Array_new[i]=Array[i-1];}System.out.println("插入后的数组为:");length++;//返还给原来的数组,间接的改变了数组长度Array=Array_new;}//删除public void delete(int index) {Object []Array_new=new Object[length-1]; T deletedNum;// 待删除位置之前所有数组全部复制到新数组for (int i=0;i<index-1;i++) {Array_new[i]=Array[i];}deletedNum=(T)Array[index-1];// 待插入位置之后所有数组全部复制到新数组for(int i=index;i<length;i++) {Array_new[i-1]=Array[i];}//返还给原来的数组,间接的改变了数组长度System.out.println("删除的数字是"+deletedNum);Array=Array_new;length--;}//查public T get(int index) {System.out.println("找到了");return (T)Array[index];}//改public boolean update(int index,T num) {try{Array[index]=num;System.out.println("修改成功");return true;}catch(Exception e){System.out.println("修改失败,索引下标越界!");return false;}}}
Shape类
public abstract class Shape { int x1,y1,x2,y2; // 鼠标拖动起点和终点的位置float strock; //画笔的宽度Color currentColor; //设置当前画笔的颜色public Shape(int x1, int y1, int x2, int y2, Color currentColor, float strock) {super();this.x1 = x1;this.y1 = y1;this.x2 = x2;this.y2 = y2;this.currentColor = currentColor;this.strock = strock;}public abstract void draw(Graphics2D g); }
具体应用泛型如:
ArrayList<Shape> array1=new ArrayList<Shape>();
0 0
- 自定义队列和泛型
- 自定义栈和队列
- 自定义数组列表和队列
- GCD自定义的队列 和 全局队列的区别
- Queue与Deque队列和自定义堆栈
- 自定义队列
- 自定义队列
- 工作队列(系统工作队列和自定义工作队列使用区别) tasklet
- java的数组队列和泛型
- 自定义优先队列和操作符重载问题
- java自定义队列
- 自定义字节缓冲队列
- 用单链表自定义队列
- 优先队列 自定义优先级
- 自定义队列MyArray
- 链表自定义队列
- c++自定义队列
- 自定义消息队列
- 日语体言与用言
- Ubuntu16.04+CUDA8.0+caffe配置
- CVPR 2017-01-03
- mac版本下的HBuilder工具栏的显示与隐藏
- C++遇到回车停止读入字符串
- 自定义队列和泛型
- jQuery :even & :odd 选择器
- 自定义toast的布局
- Xml文件的解析与生成(pull解析和Dom4j解析)
- CVPR 2017-01-04
- 文档格式转换(win,unix\linux,mac)
- javascript基础知识点轨迹(二)
- 自旋锁、阻塞锁、可重入锁、悲观锁、乐观锁、读写锁、偏向所、轻量级锁、重量级锁、锁膨胀、对象锁和类锁
- Atitit.每月数据采集与备份 v4