ArrayList

 

一、概念

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);
				
	}

}
```

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值