自定义ArrayList集合

来源:互联网 发布:上古世纪精灵捏脸数据 编辑:程序博客网 时间:2024/05/21 11:29
package com.heima.structure;


import java.util.Arrays;


/**
   * 自己实现ArrayList集合  
   * @author Zw
   * */
public class MyArrayList {
/**
* ArrayList 其实底层是数组 
*  定义一个数组 对数组进行增删改查操作
* @author Zw
* */
//无参函数进行初始化
public MyArrayList(){
init(10); //默认给10个初始化容量
}
/**
* 有参函数进行初始化
* */
public MyArrayList(int  capacity){
init(capacity);
}
public Object [] arr;//定义一个数组
//第二步统计集合中的元素 
private int size=0;
/**
* 进行初始化方法

* */
private void init(int capacity){
//进行合法判断
if(capacity<0){
throw new RuntimeException("进行初始化错误");
}
arr=new Object[capacity]; //初始化完成
}
/***
* @param 自己集合添加元素功能 你给我一个Object 类型进行添加

* */
public void  add(Object element){
//如果数组越界 进行扩充
if(size>=arr.length){
int newCapacity=arr.length*2;
Object []newarr= Arrays.copyOf(arr, newCapacity);
arr=newarr;
}
//进行赋值操作
arr[this.size]=element;
this.size++;//下标进行加加
}
  /**
  * @param  查询指定元素所在的下标(比如,44元素的位置就是3.).
  * @return 找到了就返回下标 否则-1
  * */
public int getElementIndex(Object element){
for (int i = 0; i < arr.length; i++) {
if(arr[i]==element){
return i;//找到了
}
}
return -1; //没有找到


//*4):查询指定索引是哪一个元素(比如,位置为2的球员是33.).
/**
* @author Zw
* @param 根据你给我的索引去查找是否有这个元素
* @return 如果找到了就返回
* **/
public Object getIndexElement(int index){
//我要检查是否合法
if(index<0||index>arr.length){
throw new RuntimeException("数组索引越界了♪(^∇^*)");
}
return arr[index];//取出这个值
}

//5):从集合元素中,移除指定的元素 根据下标进行删除.
/**
* @author ZW
* @param 根据你给我的下标进行删除操作
* */
public void remove(int index){
//进行合法判断
if(index<0||index>arr.length){

}
else{
for (int i = index; i < this.size-1; i++) {
arr[i]=arr[i+1]; //把后面元素位置往前面加1
}
this.size--; //进行减一操作 因为我删除一个所以进行减
}
}
//根据元素进行删除了
/**
* @author Zw
* @param 根据你给我的元素去删除
* */
public void remove(Object element){
int index=getElementIndex(element);//找到它的下标
remove(index);//进行删除
}
/**
* @param 根据指定下标位置的元素换成另一个元素.. 

* */
public void set(int index,Object element){
//判断这个下标是否存在 
if(index<0||index>arr.length){
throw new RuntimeException("索引越界了亲 ╭(╯3╰)╮");
}
arr[index]=element;//改变这个下标的元素值


/**
* @param判断此集合是否为空
* @return 返回真假值
* */
    public boolean isEmpty(){
    return this.size==0?true:false;
    }

    
    /**
     * @author Zw
     * @param 8.0 返回此集合中的所有个数
     * */
public  int Size(){
return this.size;
}
/**
* @author Zw
* @param 清除所有集合中的元素
* */
public void clear(){
for (int i = 0; i < arr.length; i++) {
arr[i]=null; //全部赋值给null
}
this.size=0; //改变集合中的个数
}



    /***
     * @param// 9):打印所有的元素(比如:[11,22,33,44,55]) 
     *遍历功能
     * @author Zw
     * */
public String print(){
StringBuilder sb=new StringBuilder(size*2);
sb.append("[");
for (int i = 0; i <=size-1; i++) {
sb.append(arr[i]);
if(i!=this.size-1){
sb.append(",");
}
}
sb.append("]");
return sb.toString();
}
/**
* 重写父类的Object的toString方法

* **/
@Override
public String toString(){
return this.print();
}
}
0 0
原创粉丝点击