package com.test.collection;

/**
* 自定义ArrayList容器
*
* 1.实现原理:底层封装数组
*
* 2.查询
* LinkList 相较 ArrayList 查询效率低:
* 由于LinkList底层存放元素的不是数组,不能直接通过索引进行获取,需要从头或者从尾逐一遍历索引节点对象。
* ArrayList直接通过索引获取即可。
*
* 3.删除、插入
* linkList 相较ArrayList 插入、删除的效率高
* LinkList 直接打断前后的链接,链接到新对象即可;
* 而ArrayList插入之后需要对后面的元素 进行整体移位
*
*/
public class MyArrayList { private int size;
private Object[] elementData; public MyArrayList(){
this(10);
}
public MyArrayList(int initialCapacity){
if(initialCapacity<0){
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
elementData=new Object[initialCapacity];
}
public void add(Object obj){
ensureCapacity();
elementData[size++]=obj;
} public Object get(int index){
rangeCheck(index);
return elementData[index];
} //下标越界检查
private void rangeCheck(int index){
if(index<0 || index>size){
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
} public void ensureCapacity(){
if(size>=elementData.length){//数组扩容
Object[] newArray=new Object[size*2+1];
System.arraycopy(elementData, 0, newArray, 0, elementData.length);
elementData =newArray;
}
}
public int size(){
return size;
}
/**
* @param args
*/
public static void main(String[] args) {
MyArrayList list=new MyArrayList(3);
list.add("111");
list.add("222");
list.add("333");
list.add("444");
System.out.println(list.size);
} }

最新文章

  1. 漂亮的CSS按钮样式集以及在线生成工具
  2. Sql Server批量删除指定表
  3. HTML页面导航栏页脚不动,变换中间部分
  4. uml类关系
  5. SQL Server远程连接操作
  6. 设计模式(四):SIMPLE FACTORY简单工厂模式 -- 创建型模式
  7. Checking the Calendar
  8. 安卓能用的modebus CRC16计算,附上对应的C语言的CRC16(转)
  9. Java(17)异常
  10. EntityFramework连接SQLite
  11. Fiddler的hosts配置使用
  12. IOS开发之App被拒原因
  13. C#Mvc批量删除
  14. Problem 3: Largest prime factor
  15. Docker: docker network 容器网络
  16. HDU 4786 Fibonacci Tree 最小生成树
  17. day 03 变量与基本数据类型
  18. wireshark源码分析二
  19. eclipse 创建普通maven项目
  20. C语言运算符优先级和ASCII表

热门文章

  1. yum及RPM安装
  2. rest-assured的默认值与Specification重用
  3. [SP1825] Free tour II
  4. 基于中间件的RBAC权限控制
  5. G: 又见模法师
  6. HDU4499
  7. Scrapy安装指南(windows)
  8. C++ GUI Qt4编程(09)-3.3spreadsheet-toolbar
  9. Java Web编程
  10. docker 安装使用gitlab