Jakarta EE 菜鸟之ArrayList的增删改查

ArrayList相对于LinkedList来说,在操作上就容易理解多了,毕竟数组的操作都是针对于索引。

  1. 添加元素方法
/**
	 * 
	 *  	version:2. 添加元素的时候,在要添加的元素即将超过当前数组的长度的时候,自动扩容,扩容机制 length*2;
	 * @param obj
	 */
	public void add(Object obj){
		//version2:自动扩容
		//1。先判断数组长度是否大于当前元素个数,如果是,就扩容再添加元素
		if(arr.length>size){
			arr = Arrays.copyOf(arr,arr.length*2);
		}
		//2.如果当前能够装下元素,直接添加元素
		//添加元素,就是将该数组指定索引处元素赋值
		arr[size] = obj;
		//元素个数+1
		size++;
	}
  1. 重写toString,打印对象就是将对象中所有的元素打印指定格式:
    [值1,值2,值3,值4…]
/**
	 * 
	 *  version1. 显示所有元素,包括没有赋值的数组中元素
	 *  version2. 只显示有元素的 =》size个
	 *  
	 */
	@Override
	public String toString() {
		//1.创建一个新数组,元素的个数是size个
		Object[] newArr = new Object[size];
		//2.将源数组所有赋值的元素复制进有新数组
		System.arraycopy(arr, 0, newArr, 0, size);
		//3.将新数组的转换字符串形式
		String str = Arrays.toString(newArr);
		return str;
	}
  1. 返回当前数组元素个数
/**
	 * 
	 * @return
	 */
	public int size(){
		return size;
	}
  1. 查询指定索引的元素
/**
	 * 
	 * @param index
	 * @return
	 */
	public Object searchElementByIndex(int index){
		//1.查看当前index是否在当前数组的length表示范围之内
		checkIndex(index);
		return arr[index];
	}
  1. 查询指定元素是否存在,如果存在,返回第一个出现的索引,如果不存在,返回-1
/**
	 * 
	 * @param obj
	 * @return
	 */
	public int searchIndexByElement(Object obj){
		//1.判断当前obj合法性,即非空校验,如果是null,则用==比较,否则根据引用类型的特点应该用equals比较
		if(obj == null){
			//遍历数组
			for (int i = 0; i < size; i++) {
				if(arr[i] == obj){
					return i;
				}
			}
		}else{
			for (int i = 0; i < arr.length; i++) {
				if(obj.equals(arr[i])){
					return i;
				}
			}
		}
		//找不到
		return -1;
	}
  1. 检查索引的合法性 =>由于大量的适用于该功能,所以抽象成一个方法
/**
	 * 
	 * @param index
	 */
	public void checkIndex(int index){
		//如果索引小于0或大于元素个数-1
		try {
			if(index<0 || index>size-1){
				System.out.println("您输入的索引有误!"+"当前输入值:"+index);
			}
		} catch (ArrayIndexOutOfBoundsException e) {			
			}		
	}
  1. 删除指定索引处的元素
/**
	 * 
	 * @param index
	 */
	public boolean deleteElementByIndex(int index){
		//索引合法性校验
		checkIndex(index);
		//删除指定索引的元素时,要将后面的元素向前移动一位
		System.arraycopy(arr, index+1, arr, index, size-index-1);
		//将size-1
		size--;
		return true;
	}
  1. 删除指定元素 deleteElementByElement(Object obj)
/**
	 * 
	 * 如果成功,返回true
	 * @param obj
	 * @return
	 */
	public boolean deleteElementByElement(Object obj){
		//1.遍历数组,查看obj是否在数组中存在,如果有则返回第一次出现的索引。直接调用方法	searchIndexByElement(Object obj)
		int index = searchIndexByElement(obj);
		//2.按照索引删除指定元素,直接调用方法
		if(index>=0){
			deleteElementByIndex(index);
			return true;
		}else{
			return false;
		}
	}
  1. 将指定索引处的元素修改为指定元素
/**
	 *
	 * @param index
	 * @param obj
	 * @return
	 */
	public boolean updateElementByIndex(int index,Object obj){
		//索引合法性校验
		checkIndex(index);
		//根据下标将指定位置元素替换
		arr[index] = obj;
		return true;
	}
  1. 在指定索引插入指定元素 insertElementByIndex(int index,Object obj)
/**
	 *
	 */
	public boolean insertElementByIndex(int index,Object obj){
		//索引校验
		checkIndex(index);
		//增加长度
		arr = Arrays.copyOf(arr, ++size);
		//插入指定元素,要将后面的元素向后挪动一位
		System.arraycopy(arr, index, arr, index+1, size-index-1);
		arr[index] = obj;		
		return true;
	}
  1. 创建指定长度的数组集合
	/**
	 * 11.创建一个指定长度的_01ArrayList对象	 * 
	 */	
	public _01ArrayList(int length) {
		//校验length合法性
		if(length<=0){
			throw new IllegalArgumentException("数组长度不能为小于等于0,length:"+length);
		}
		arr = new Object[length];
	}
		/**
	 * 12.如果默认无参构造创建,则创建默认长度是10的容器
	 */	
	public _01ArrayList() {
		this(10);
	}
	/**
	 *13.将数组中所有元素清空 clear(); 
	 */
	public void clear(){
		//将数组重新创建一个空数组
		arr = new Object[10];
		//将数组的元素个数清0
		this.size = 0;
	}	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值