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. 20165314 [第二届构建之法论坛] 预培训心得(Java版)

    安装IDEA配置JDKsourcepath啥的之前已经弄好了 克隆项目 emmm这次的代码托管部分好像比之前做的要简单,之前还要git config啥的,还有就是git clone不会提示要输入账号密 ...

  2. Linux 服务器运行健康状况监控利器 Spotlight on Unix 的安装与使用

    1.本文背景 1.1.Linux 服务器情况 # cat /etc/issueRed Hat Enterprise Linux Server release 6.1 (Santiago)Kernel ...

  3. 剑指offer数组3

    面试题11:旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2 ...

  4. django 第二天

    进行了前后端简单的链接 view 视图代码如下 from django.shortcuts import render from django.http import HttpResponse fro ...

  5. js-事件以及window操作

    属性 当以下情况发生时,出现此事件 onblur 元素失去焦点 onchange 用户改变域的内容 onclick 鼠标点击某个对象 ondblclick 鼠标双击某个对象 onfocus 元素获得焦 ...

  6. tensorflow安装-【老鱼学tensorflow】

    TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,Tensor ...

  7. ajax 函数回调

    var initTaxPriod = function (taxNo) { intitSearch(); $("#taxPeriod").html(""); t ...

  8. ssl证书专题(2):自签名ssl 证书生成

    参考: https://www.cnblogs.com/littleatp/p/5878763.html https://www.cnblogs.com/hnxxcxg/p/7610582.html

  9. MyCat-简介

    一MyCat简介 java编写的数据库中间件 Mycat运行环境需要JDK. Mycat是中间件.运行在代码应用和MySQL数据库之间的应用. 前身 : corba. 是阿里开发的数据库中间件.实现M ...

  10. 20175312 2018-2019-2 《Java程序设计》结对编程练习_四则运算(第二周:整体性总结)

    20175312 2018-2019-2 <Java程序设计>结对编程练习_四则运算(第二周:整体性总结) 结对对象与其博客链接 20175309 刘雨恒:https://www.cnbl ...