一、概念
Arraylist(数组列表):它可以在数组中动态的增加或减少元素,实现了ICollection和IList接口,能灵活的设置数组的大小。ArrayList的长度是动态的,可以存储任意多的对象,但是只能存储**对象**,不能存储原生数据类型例如int。
二、常用方法:(增、删、改、诊、查)
1、存储数据
boolean add(E e):
将指定的元素添加到此列表的尾部。
void add(int index, E element):
将指定的元素插入此列表中的指定位置。
2、删除数据
E remove(int index):
移除此列表中指定位置上的元素。
3、修改数据
E set(int index, E element) :
用指定的元素替代此列表中指定位置上的元素。
4、判断是否包含某个数据
boolean contains(Object o):
如果此列表中包含指定的元素,则返回 true。
5、获取数据
int size() :
返回此列表中的元素数。
三、属性:
1、存储数据的数组:
//ArrayList中保存的元素个数 可以当作一个计数器
private int size;
2、记录元素的个数
//数组的最大长度
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
在Java源代码中可以看出,Arraylist类是一个泛型类<E>。每个ArrayList实例都有一个容量。该容量是指用来存储列表元素的数组的大小。
List接口的大小可变数组的实现。
四、相关代码
以下代码实现ArrayList的常用功能
public class ArrayList<E> implements List<E> {
Object [ ] data = {2,4,6,50}; // 初始时,定义数组内的内容
int size = data.length ; // 定义数组的长度
**//添加数据----->扩大数组的长度**
public void add(E e) {
//只能用Object创建新的数组
Object[] newarr = new Object[size+1];
//复制原列表中的数据到新数组中
for(int i=0;i<size;i++){
newarr [i] = data[i];
}
// System.arraycopy(data, 0, newarr, 0, size);
//新数组长度赋值给原数组
data = newarr;
//添加到新数据中
data[size] = e;
size++;
}
**//获取数据**
public E get(int index) {
return (E)data[index]; //(E)强制转型
}
//获取数据个数
public int Size(){
// System.out.println("Listsize:"+size);
return size;
}
**//删除数据**
public void remove(int index ) {
Object[] newarr = new Object[size-1];
*//old{1,2,3,4,5,6}
//new{1,2,index(移除),4,5,6}*
for(int i=0; i<index; i++){//识别index前的数字,赋给新的数组
newarr[i]=data[i];
System.out.println(i);
}
for(int i=index+1;i<size;i++){//识别index后面的数字,再赋给之前的新数组。
newarr[i-1]=data[i];//把原数组的4(3位)--->新数组(2位)
}
data=newarr;
size--;
}
**//修改数据**
public Object set(int index, Object element) {
Object[] newarr = new Object[size];
for(int i=0;i<data.length;i++){
newarr[i] = data[index];
data[index] = element;
}
return newarr;
}
**//判断是否包含某个数据**
public boolean contains(Object o) {
Object[] newarr = new Object[size];
for(int i=0;i<data.length;i++){
if(data[i]==o){
return true;
}
if(o==null){
return false;
}
}
return false;
}
//主方法
public static void main(String[] args){
ArrayList list = new ArrayList<>();
list.add(12);
list.add(24);
list.add("你");
for(int i=0; i<list.size; i++){
System.out.println("Oldlist:"+list.get(i));
}
list.Size();
list.remove(0);//(0)代表移走的数组中的第一位数
list.set(2, 78);//修改数组中选定位置上的元素
for(int j=0; j<list.size; j++){
System.out.println("amendlist:"+list.get(j));
}
boolean m = list.contains(3);
System.out.println("Contains:"+m);
boolean m1 = list.contains(6);
System.out.println("***Contains:"+m1);
}
}
```