与数组相比,arraylist类为开发人员提供的功能有哪些

如题所述

先说一下arrarylist和数组arrary的区别。

·数组的容量是固定的,而ArrayList类的容量是可以根据需要自动扩充。

·ArrayList类提供添加、删除和插入某一范围元素的方法,但在数组中只能一次获取或设置一个元素的值。

·ArrayList类提供将只读和固定大小包装返回到集合的方法,而数组不提供。

·ArrayList只能是一维形式,而数组可以是多维的。

ArrayList提供了三种构造器,有三种声明方式

1)public ArrayList()

声明方法:ArrayList list = new ArrayList()

2)public ArrayList(ICollection)

声明方法:ArrayList list = new ArrayList(arrName) arrName是指要添加的数组名称

3)public ArrayList(int)

声明方法:ArrayList list = new ArrayList(n) n是指ArrayList对象空间的大小。

下面介绍ArrayList常用到得一些方法:

·Add方法:该方法用来将对象添加到ArrayList集合的结尾处,其语法格式如下:public virtual int Add(Object value)

·Insert方法:该方法用来将元素插入ArrayList集合的指定索引处,其语法格式如下:public virtual void Insert(int index,Object value)

·Clear方法:该方法用来从ArrayList中移除所有元素,其语法格式如下:public virtual void Clear()

·Remove方法:该方法用来从ArrayList中移除特定对象的第一个匹配项,其语法格式如下:public virtual void Remove(Object obj)obj是指要从ArrayList中移除的对象,可以为空引用。

·RemoveAt方法:该方法用来移除ArrayList的指定索引处的元素,其语法如下:public virtual void RemoveAt(int index)

·RemoveRange方法:该方法用来从ArrayList中移除一定范围的元素,其语法格式如下:public virtual void RemoveRange(int index,int Count)

上述只是几个比较常用的方法,ArrayList类还有其他很多不错的方法,希望读者在使用的时候能够自己去研究下用法,掌握这些系统提供的方法能够提高开发的效率,提高代码的质量。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-12-16
提供给你思路,这里我只做往数组里加int数字,其实可以做泛型的,如果你想深研究自己去看JDK源码。 我这里只是简单的做数组之间的复制。代码略长:不懂追问!

public class MyList {
private int size;
Object[] object = null;
Object[] temp;
int sequence = 0;

public MyList() {
this(1);
}

public MyList(int size) {
if (size <= 0) {
throw new IllegalArgumentException("长度应大于0");
} else {
this.size = size;
this.object = new Object[this.size];
}
}

// Add, Insert, Delete, Find
public void add(Object obj) {
if (obj == null) {
throw new IllegalArgumentException("添加的对象不应为null");
} else {
if (sequence >= size) {
this.size++;// 这里扩展空间方式随意,可以每次扩展两倍
temp = new Object[this.size];
System.arraycopy(object, 0, temp, 0, object.length);
object = temp;
temp = null;
}
object[sequence] = obj;
sequence++;
}

}
public void insert(int index, Object obj) {
if (index < 0 || obj == null) {
throw new IllegalArgumentException("插入的索引值应不小于0,并且插入的对象不应为null");
} else {
if (index == object.length) {
add(obj);
} else if (index > object.length) {
throw new IllegalArgumentException("数据越界,插入的索引不应不在数组范围内");
}
if (sequence >= size) {
this.size++;
}
temp = new Object[this.size];
System.arraycopy(object, 0, temp, 0, index);//[1,2,3]
temp[index] = obj;
System.arraycopy(object, index, temp, index+1, object.length-index);
object = temp;
temp = null;
sequence++;
}

}
public void delete(int index) {
if (index < 0 || index>this.size) {
throw new IllegalArgumentException("索引应在数组范围内");
} else {
temp = new Object[--this.size];
System.arraycopy(object, 0, temp, 0, index);
System.arraycopy(object, index+1, temp, index, object.length-1-index);
object = temp;
temp = null;
sequence--;
}
}

public Object find(int index) {
if (index < 0 || index > this.size) {
throw new IllegalArgumentException("索引应大于0或不大于集合元素数");
} else {
return object[index];
}
}

public int size() {
return this.size;
}

}
相似回答