package com.pcxm.list;

/**
* 手动实现一个list
* MyList
* @description TODO
* @author zhoum
* @date 2018年5月24日 下午4:51:39
* @version TODO
*/
public class MyList<T> {
private static Integer default_size = 10;
private static Integer arrSize = 0;
private static Object [] obs ;
public void add(T t){
//检查容量是否够
checheck(arrSize+1);
obs[arrSize++] = t;
}
//检查当前数组的容量是否够,如果不够,则替换新的数组
private static void checheck(int size) {
if(obs.length<size){
//先创建一个新数组
Object[] obj = new Object[size*2];
for (int i = 0; i < obs.length; i++) {
obj[i] = obs[i];
}
obs = obj;//替换为新的数组实现扩容
}
}
@SuppressWarnings("unchecked")
public T get(int index){
checkIndex(index);
return (T)obs[index];
}
private void checkIndex(int index){
if(index<0 || index>=arrSize){
throw new RuntimeException("数组索引不正确");
}
} public int size(){
return arrSize;
} public void remove(int index){
//先检查index是否在范围内
checkIndex(index);
//先看下是不是最后一位
int changNum = arrSize-index-1;
if(index==arrSize){
obs[index] = null;
}else{
System.arraycopy(obs, index+1, obs, index, changNum);
}
arrSize--; }
//初始化大小
public MyList() {
this(default_size);
}
public MyList(Integer default_size) {
if(default_size<0){
throw new RuntimeException("初始大小必需大于0");
}
obs = new Object[default_size];
} }

  

手动实现一个list的常用功能的更多相关文章

  1. [转]WebPack 常用功能介绍

    概述 Webpack是一款用户打包前端模块的工具.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑.打包其他的静态资源,包括css.image.font file.templa ...

  2. FastReport.Net 常用功能总汇

    一.常用控件 文本框:输入文字或表达式 表格:设置表格的行列数,输入数字或表达式 子报表:放置子报表后,系统会自动增加一个页面,你可以在此页面上设计需要的报表.系统在打印处理时,先按主报表打印,当碰到 ...

  3. WebPack常用功能介绍

    概述 Webpack是一款用户打包前端模块的工具.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑.打包其他的静态资源,包括css.image.font file.templa ...

  4. TeeChart控件的安装与常用 功能设置

    TeeChart控件的安装 TeeChart 7.0 With Source在Delphi 7.0中的安装 一.删除Delphi7自带TeeChart  1.Component -> insta ...

  5. 转: 尽己力,无愧于心 FastReport.Net 常用功能总汇

    FastReport.Net 常用功能总汇   一.常用控件 文本框:输入文字或表达式 表格:设置表格的行列数,输入数字或表达式 子报表:放置子报表后,系统会自动增加一个页面,你可以在此页面上设计需要 ...

  6. fiddler抓包常用功能详解

    一.基础部分: 1.设置代理ip及端口,tools --> telerik fiddler options --> connections -->勾选 “ Allow romote ...

  7. egret常用功能

    egret常用功能<pre>//////////////////////////////////////////////////////////////////////////////// ...

  8. python轻量级orm框架 peewee常用功能速查

    peewee常用功能速查 peewee 简介 Peewee是一种简单而小的ORM.它有很少的(但富有表现力的)概念,使它易于学习和直观的使用. 常见orm数据库框架 Django ORM peewee ...

  9. SpringBoot整合Redis实现常用功能

    SpringBoot整合Redis实现常用功能 建议大小伙们,在写业务的时候,提前画好流程图,思路会清晰很多. 文末有解决缓存穿透和击穿的通用工具类. 1 登陆功能 我想,登陆功能是每个项目必备的功能 ...

随机推荐

  1. 【原创】大叔算法分享(5)聚类算法DBSCAN

    一 简介 DBSCAN:Density-based spatial clustering of applications with noise is a data clustering algorit ...

  2. 1.arm的linux系统搭建

    从裸板到系统 一般是CPU内部有启动代码,如nuvoton的nuc900系列的芯片内部就有ibr程序,来控制启动过程,在usb启动时负责加载usb驱动,这样在pc端就可以识别到usb设备了,然后通过t ...

  3. java入门写的第一个代码《HelloWorld》

    public class HelloWorld {public static void main(String[] args){System.out.println("HelloWorld! ...

  4. html基础技巧:点击、placeholder、文本、字体、清楚浮动

    点击处理: 消除a标签点击后的边框,颜色(background:#fff) 1:a:focus{outline:none;} button去除边框 1:border:none 2:border:0px ...

  5. gdb常用命令及gdb调试多进程/线程程序&coredump

    一.常用普通调试命令 1.简单介绍GDB 介绍: gdb是Linux环境下的代码调试⼯具.使⽤:需要在源代码⽣成的时候加上 -g 选项.开始使⽤: gdb binFile退出: ctrl + d 或 ...

  6. git 回滚远程服务端master的代码

    1.先备份版本 git checkout master git pull git branch master_backup //备份一下这个分支当前的情况 git push origin master ...

  7. 利用fastjson解析json并通过js&ajax实现页面的无跳转刷新

    1.json是一种优秀的数据格式,在移动开发和web开发中经常用到,本例中通过一个小案例讲解如何通过alibaba的开源框架fastjson来解析jason数据格式并通过js实现无跳转刷新 2,新建一 ...

  8. java的编译过程

    用记事本编写两个java文件 第一个Employee.java import java.io.*; public class Employee{ String name; int age; Strin ...

  9. 继承了AppCompatActivity的全屏设置

    v7下全屏设置:getSupportActionBar().hide();getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN ...

  10. C++类的成员

    1.成员变量 成员变量可以是任何类型,如基本数据类型.引用.另一个类的对象或指针.自身类的引用或指针,但不能是自身类的对象: 成员变量不能指定为auto.register.extern 存储类型. 1 ...