ArrrayList底层代码的实现
定义变量
首先要想实现该块代码,必须定义三个私有变量。
private Object[] elementData;该变量用来存储容器中元素的个数。
private int size;该变量表示当前容器已经存在的元素个数;
private static finnal int FAULT_CAPACITY = 10;默认当前容器允许存储的元素个数为10个。
定义构造方法
其核心代码如下所示:
public Test(int index){
if(size<0){
throw new RunTimeException('容器容量不能为负数!");
}else if(size==0){
elementData = new Object[FAULT_CAPACITY];
}else{
elementData = new Object[index];
}
}
main主方法
其核心代码如下所示:
public static void main(String[] args){
Test t = new Test(2);
}
添加元素方法
其核心代码如下所示:
public void add(E element){
if(size==elementData.length){
Object[] newArray = new Object[elementData.length+(elementData.length>>1)];
System.arraycopy(elementData,0,newArray,0,elementData.length);
elementData = newArray;
}
elementData[size++] = element;
}
判断索引是否合法方法
其核心代码如下所示:
public void checkArrage(int index){
if(index<0||index>size-1){
throw new RunTimeException("当前索引不合法!+index");
}
获得元素个数方法
其核心代码如下所示:
public int size(){
return size;
}
判断容器是否为空方法
其核心代码如下所示:
public boolean isEmpty(){
return size==0?true:false;
}
获得指定位置元素方法
其核心代码如下所示:
public E get(int index){
checkArrage(index);
return (E)elementData[index];
}
移除元素方法
其核心代码如下所示:
public void move(E element){
for(int i=0;i<size;i++){
if(element.equals(get(i))){
}
}
}
移除指定位置元素方法
其核心代码如下所示:
public void move(int index){
checkArrage(index);
int nummoved = size-index-1;
if(nummoved>0){
System.arraycopy(elementData,index+1,elementData,index,nummoved){
}
elementData[--size] = null;
}
}
设定方法
其核心代码如下所示:
public void set(int index, E element){
checkArrage(index);
elementData[index] = element;
}
字符转换方法
其核心代码如下所示:
public String toString(){
StringBulider sb = new StringBulider();
sb.append('[');
for(int i=0;i<size;i++){
sb.append(elementData[i]+",");
}
sb.setCharAt(sb.length()-1,']');
return sb.toString();
}
PS:以上方法只需要在main方法里面调用就行。
ArrrayList底层代码的实现的更多相关文章
- java中CRUD(增删查改)底层代码的实现
java中CRUD(增删查改)底层代码的实现: package com.station.dao; import com.station.model.Product; import java.sql.* ...
- 底层代码创建GUI
%底层代码创建GUI hf = figure(... 'Units','Normalized',... 'Color','w',... 'Position',[0.1 0.1 0.8 0.8]); h ...
- JAVAEE——BOS物流项目02:学习计划、动态添加选项卡、ztree、项目底层代码构建
1 学习计划 1.jQuery easyUI中动态添加选项卡 2.jquery ztree插件使用 n 下载ztree n 基于标准json数据构造ztree n 基于简单json数据构造ztree( ...
- 图像的点运算----底层代码与Halcon库函数
最基本的图像分析工具----灰度直方图.使用直方图辅助,可以实现4大灰度变换,包括线性灰度变换(灰度拉伸).灰度对数变换.灰度伽马变换.灰度分段线性变换:使用直方图修正技术,可以实现2大变换,包括直方 ...
- Java反射简单使用--第一次细致阅读底层代码
1:所写的东西都经过验证,保证正确,环境jdk8,eclipse2:在例子中,尽量以生产环境中实际代码为例,那种固定值什么的没什么意义 问题: 1:想获取调用方法所需要的参数 2:参数是以json形式 ...
- ArrayList底层代码解析笔记
通过底层代码可以学习到很多东西: public class ArrayList<E> extends AbstractList<E> implements List<E& ...
- Nova创建虚拟机的底层代码分析
作为个人学习笔记分享.有不论什么问题欢迎交流! 在openstack中创建虚拟机的底层实现是nova使用了libvirt,代码在nova/virt/libvirt/driver.py. #image_ ...
- ceph 底层代码分享
一.底层工作队列 二.对象操作 三.上下文(Context)代码分析:
- LinkedList底层代码解析笔记
LinkedList是属于Sequence List,故遍历是用迭代器更快; LinkedList继承自AbstractSequenceList.实现了List及Deque接口.其实AbstractS ...
随机推荐
- Python(3)
使用除法来缩减数字,使用余数法来计算个数. class Solution: def hammingWeight(self, n: int) -> int: count = 0 while Tru ...
- 梁国辉获Yes评分表系统3.0计算机软件著作权
梁国辉获Yes评分表系统3.0计算机软件著作权 Liang Guohui won the Yes score system 3 computer software copyright 登记证书如下 R ...
- Spring5参考指南:AspectJ高级编程之Configurable
文章目录 遇到的问题 @Configurable 原理 重要配置 遇到的问题 前面的文章我们讲到了在Spring中使用Aspect.但是Aspect的都是Spring管理的Bean. 现在有一个问题, ...
- SQL Server遍历表中记录的2种方法
SQL Server遍历表一般都要用到游标,SQL Server中可以很容易的用游标实现循环,实现SQL Server遍历表中记录.本文将介绍利用使用表变量和游标实现数据库中表的遍历. 表变量来实现表 ...
- (PSO-BP)结合粒子群的神经网络算法以及matlab实现
原理: PSO(粒子群群算法):可以在全局范围内进行大致搜索,得到一个初始解,以便BP接力 BP(神经网络):梯度搜素,细化能力强,可以进行更仔细的搜索.数据: ...
- showModalDialog使用讲解
基本介绍: showModalDialog() (IE 4+ 支持) showModelessDialog ...
- Jmeter 后置处理器
1.JSON Extractor Json extractor 后置处理器用在返回格式为 Json 的 HTTP 请求中,用来获取返回的 Json 中的某个值.并保存成变量供后面的请求进行调用或断言等 ...
- RF(页面断言)
一.RF中断言方式 title should be(断言title与预期指定的title内容相等) Open Browser https://www.baidu.com/ gc Title Shoul ...
- Java采用反射技术创建对象后对目标类的成员变量和成员方法进行访问
实现: package com.ljy; import java.lang.reflect.Field; import java.lang.reflect.Method; /** * * @Class ...
- System.Linq.Dynamic字符串转委托
以前一直想着有没有一个方法能够把字符串直接转化成函数的,刚好有需求就找了下,还真有. 微软地址:https://docs.microsoft.com/en-us/previous-versions/b ...