自己写的一个ArrayLIST,but 不知道怎么很好的实现System底下的arraycopy方法

来源:互联网 发布:比邻星 知乎 编辑:程序博客网 时间:2024/04/29 11:55
package cn.***.tiger.TestClass;


/**
 * 
 * @author Tiger
 * TigerArrayList
 */


public class TigerArrayList {

Object[] arr;

int size;

public TigerArrayList() {
this(10);
}


public TigerArrayList(int capacity) {

arr = new Object[capacity];
}

public int size()
{
return size;
}

public int arrLength()
{
return arr.length;
}

public void setSize(int size) {
this.size = size;
}


public boolean rangCheck(int index )
{
if(index < 0 || index >=size)
return false;
return true;
}

public int indexOf(Object obj)
{
if(obj != null)
{
for(int i = 0; i < arr.length; i++)
{
if(arr[i].equals(obj))
return i;
}
}
return -1;

}


public int lastIndexOf(Object obj)
{
if(obj != null)
{
for(int i = arr.length - 1; i >= 0; i--)
{
if(arr[i].equals(obj))
return i;
}
}
return -1;

}

public boolean isEmpty()
{
return size == 0;
}

public void add(Object obj)
{
if(obj != null)
{
arr[size] = obj;
size++;

ensureCapacity();

}
}

public void add(int index, Object obj)
{

ensureCapacity();
size ++;
System.arraycopy(arr, index, arr, index + 1, size - index);
arr[index] = obj;

}

private boolean rangeCheck(int index) {
if(index < 0 && index > size)
{
return false;
}
return true;
}


public void set(int index, Object obj)
{
if(rangeCheck(index))
{
for(int i = 0; i < size; i++)
{
if(index == i)
{
arr[index] = obj;
}
}
}
}

public Object get(int index)
{
if(rangeCheck(index))
{
for(int i = 0 ; i < size; i++)
{
if(index == i)
return arr[index];
}
}
return null;

}

public void remove(int index)
{
rangeCheck(index);

for(int i = 0; i < arr.length; i ++)
{
if(index == i)
{
System.arraycopy(arr, i + 1, arr, i, size - i - 1);
}
}
}

private void ensureCapacity()
{
if(size >= arr.length)
{
int newCapacity = arr.length * 2 + 1;
Object[] newOne = new Object[newCapacity]; 
System.arraycopy(arr, 0, newOne, 0, arr.length);
arr = newOne;
}
return;
}

// private void arraycopy(Object[] src, int sPos, Object[] dest, int dPos, int len)
// {
//
//// if(rangCheck(sPos) && rangCheck(dPos) && src != null && dest != null)
//// {
// for(int i = dPos; i <(dPos + len); i++)
// {
// dest[i] = src[sPos];
// sPos ++;
// }
//// }
// }
public static void main(String[] args)
{
TigerArrayList list = new TigerArrayList(2);
FamilyMembers f1 = new FamilyMembers("tiger");
FamilyMembers f2 = new FamilyMembers("galen");
FamilyMembers f3 = new FamilyMembers("Alex");
FamilyMembers f4 = new FamilyMembers("asd");
FamilyMembers f5 = new FamilyMembers("qwe");
FamilyMembers f6 = new FamilyMembers("qwe1");
list.add(f1);
list.add(f2);
list.add(f3);
list.add(f4);
list.add(f5);
list.add(0,  f6);

System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println("size : " + list.size());
System.out.println("length :" + list.arrLength());
// list.remove(0);
// System.out.println(list.get(f1));
list.set(5, f1);
System.out.println(list.get(5));
}

}
原创粉丝点击