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. HTML及CSS学习笔记

    推荐博客:付铭 day-01 HTML 1.HTML 基本语法 html标签 单标签 <img /> .<img> 双标签 <html> </html> ...

  2. Linux 出现telnet: 127.0.0.1: Connection refused错误解决办法

    Linux 出现telnet: connect to address 127.0.0.1: Connection refused错误解决办法 没有xinetd服务: 1./etc/init.d目录中放 ...

  3. python 2.7 数据结构: 基础面试总结

    python中基础的数据类型包括: 1 Number(数字) 2 String(字符串) 3 List(列表) 4 Tuple(元组) 5 set(集合) 6 Pictionary(字典) 按照可变数 ...

  4. 将LibreOffice文档转换为豆瓣日记

    豆瓣日记的编辑器一直以来都只支持纯文本的,因此无法将原先在LibreOffice中写的带有简单格式的文章导出.由于我在豆瓣主要写一些随笔性的内容,所以它们在LibreOffice中排版时也并未用到什么 ...

  5. vue-cli 构建的项目中 如何使用less

    vue-cli 构建的项目默认是不支持 less 的,需要自己添加. 首选,安装 less 和 less-loader ,在项目目录下运行如下命令 npm install less less-load ...

  6. Linux 定时任务的配置

    通常我们会需要定时启动一些shell脚本,类似Windows中的Task Scheduler, 下面是在AWS EMR Cluster 主几点上配置的步骤: 1. 先创建一个shell脚本,将需要执行 ...

  7. 【Codeforces】【网络流】【树链剖分】【线段树】ALT (CodeForces - 786E)

    题意 现在有m个人,每一个人都特别喜欢狗.另外还有一棵n个节点的树. 现在每个人都想要从树上的某个节点走到另外一个节点,且满足要么这个人自带一条狗m,要么他经过的所有边h上都有一条狗. 2<=n ...

  8. css 浮动布局,清除浮动

    浮动的特性: (1)浮动元素有左浮动(float:left)和右浮动(float:right)两种 (2)浮动的元素会向左或向右浮动,碰到父元素边界.其他元素才停下来 (3)相邻浮动的块元素可以并在一 ...

  9. TypeScript系列 - 什么是TypeScript

    看了很多关于TypeScript的文章,总体说来没有很好的,一个系统的学习TypeScript的资源. 接下来,我将给大家带来TypeScript的系列,让你和我一样,一步一步的学习TypeScrip ...

  10. CentOS下的Mysql的安装和使用

    1.使用安装命令 :yum -y install mysql mysql-server mysql-devel 安装完成却发现Myserver安装缺失,在网上找原因,原来是因为CentOS 7上把My ...