自己写的一个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));
}
}
/**
*
* @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));
}
}
- 自己写的一个ArrayLIST,but 不知道怎么很好的实现System底下的arraycopy方法
- ArrayList的实现与System.arraycopy的使用!
- 自己写的一个ArrayList
- System.arraycopy方法的使用
- java的System.arraycopy()方法
- System.arraycopy方法的使用
- System.arraycopy方法的使用
- System.arraycopy方法的使用
- System.arraycopy方法的使用
- System.arraycopy方法的使用
- System.arraycopy方法的使用
- System.arraycopy方法的使用
- System.arraycopy方法的使用
- 关于System.arraycopy()的实现
- 自己写一个简单的ArrayList
- System.arraycopy、Arrays.copyOf和ArrayList的toArray介绍
- System.arraycopy的使用
- System.arraycopy的用法
- 数据机构之图的存储
- Android中 int 和 String 互相转换的多种方法
- struts2 + json格式解决中文乱码
- jsp于servlet的区别
- OpenGL记录——用glOrtho投影
- 自己写的一个ArrayLIST,but 不知道怎么很好的实现System底下的arraycopy方法
- LeetCode-Spiral Matrix II
- hdu1052 Tian Ji -- The Horse Racing
- MiniCRT 64位 linux 系统移植记录:64位gcc的几点注意
- line 1: syntax error: "(" unexpected
- Ant全攻略
- Introduction to Algorithms Chapter 13: Red Black Tree
- Android中页面转换
- Win32 DLL中使用MFC