自己实现一个简单ArrayList
2018-03-23 15:00
495 查看
废话不多说直接上代码
package com.zgs.utils;
import java.util.ArrayList;
import org.aspectj.weaver.patterns.ExactAnnotationFieldTypePattern;
/**
* 自己实现ArrayList
* @author Administrator
*
*/
public class MyArrayList {
private Object[] elementData;
private int size;
public MyArrayList(int initialCapacity){
if(initialCapacity<0){
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
elementData=new Object[initialCapacity];
}
public MyArrayList(){
this(10);//默认是十
}
//集合的add方法
public boolean add(Object o){
//给数据扩容
if(size==elementData.length){
Object[] ob= new Object[size*2+1];
//将数据拷贝到新数组中
System.arraycopy(elementData, 0, ob,0, elementData.length);
elementData=ob;
}
elementData[size++]=o;
return true;
}
public Object get(int index){
if(index<0 || index>=size)
throw new OutOfMemoryError("越界了");
return elementData[index];
}
public void remove(int index){
if(index<0 || index>=size)
throw new OutOfMemoryError("越界了");
int m=size-index-1;
if(m>0){
System.arraycopy(elementData, index+1, elementData, index, m);
}
elementData[--size]=null;
}
public void remove(Object o){
if(o==null){
for (int i = 0; i < elementData.length; i++) {
if(elementData[i]==null){
remove(i);
}
}
}else{
for (int i = 0; i < elementData.length; i++) {
if(elementData[i]==o){
remove(i);
}
}
}
}
public int size(){
return this.size;
}
public static void main(String[] args) {
MyArrayList s=new MyArrayList();
s.add(1);
s.add(2);
s.add(3);
s.add(4);
System.out.println("集合长度:"+s.size());
s.remove(3);
for (int i = 0; i < s.size(); i++) {
System.out.println(s.get(i));
}
}
}
运行结果
package com.zgs.utils;
import java.util.ArrayList;
import org.aspectj.weaver.patterns.ExactAnnotationFieldTypePattern;
/**
* 自己实现ArrayList
* @author Administrator
*
*/
public class MyArrayList {
private Object[] elementData;
private int size;
public MyArrayList(int initialCapacity){
if(initialCapacity<0){
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
elementData=new Object[initialCapacity];
}
public MyArrayList(){
this(10);//默认是十
}
//集合的add方法
public boolean add(Object o){
//给数据扩容
if(size==elementData.length){
Object[] ob= new Object[size*2+1];
//将数据拷贝到新数组中
System.arraycopy(elementData, 0, ob,0, elementData.length);
elementData=ob;
}
elementData[size++]=o;
return true;
}
public Object get(int index){
if(index<0 || index>=size)
throw new OutOfMemoryError("越界了");
return elementData[index];
}
public void remove(int index){
if(index<0 || index>=size)
throw new OutOfMemoryError("越界了");
int m=size-index-1;
if(m>0){
System.arraycopy(elementData, index+1, elementData, index, m);
}
elementData[--size]=null;
}
public void remove(Object o){
if(o==null){
for (int i = 0; i < elementData.length; i++) {
if(elementData[i]==null){
remove(i);
}
}
}else{
for (int i = 0; i < elementData.length; i++) {
if(elementData[i]==o){
remove(i);
}
}
}
}
public int size(){
return this.size;
}
public static void main(String[] args) {
MyArrayList s=new MyArrayList();
s.add(1);
s.add(2);
s.add(3);
s.add(4);
System.out.println("集合长度:"+s.size());
s.remove(3);
for (int i = 0; i < s.size(); i++) {
System.out.println(s.get(i));
}
}
}
运行结果
相关文章推荐
- 自己动手系列——实现一个简单的ArrayList
- 自己实现一个简单的ArrayList
- 自己动手系列——实现一个简单的LinkedList
- java多线程与并发 - 自己实现一个简单的锁(实现Lock接口)
- 自己动手实现一个简单的JSON解析器
- 自己实现的一个简单的数据库连接的插件————JdbcPlugin
- 自己实现一个简单的网购秒杀系统
- 也发一个自己实现的android简单文件选择器代码。支持多卡,排序
- Codewars简单使用和 其中一道题,用JavaScript实现一个函数,求一个正数的次大数字,拿自己的解法和大神相比,简直对不起JavaScript给我提供的 那么多便利
- 自己动手系列——实现一个简单的LinkedLis
- python装饰器,自己实现一个简单的装饰器
- 自己实现一个简单的布谷鸟散列
- 自己实现一个简单的Promise
- 自己实现一个ArrayList,模仿ArrayList类的底层结构
- 自己动手实现一个简单的string类(一)
- 《小白兔到大黑牛》第二篇基于源码自己实现简单的ArrayList中简单方法
- python装饰器,自己实现一个简单的装饰器
- 自己动手实现一个简单的String类
- 自己动手实现一个简单的string类(二)
- 自己实现一个最简单的数据库