栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

【自定义ArrayList链表】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【自定义ArrayList链表】

import java.util.Arrays;


public class MyArrayList {
	
	private Object[] elementData;
	
	private int size;
	
	private static final Object[] EMPTY_ELEMENTDATA = {};
	
	private static final int DEFAULT_CAPACITY = 10;

	
	public MyArrayList(){
		this.elementData = EMPTY_ELEMENTDATA;
	}

	
	public MyArrayList(int initialCapcity) {
		if(initialCapcity<0) {
			throw new IllegalArgumentException("容量大小错误");
		}
		this.elementData = new Object[initialCapcity];
	}
	
	
	public void add(E e) {
		//考虑需不需要扩容
		ensureCapacityInternal();
		//往数组中存储元素,同时计数加1
		elementData[size++] = e;
	}
	
	
	public int size() {
		return size;
	}
	
	
	public Object[] elementData() {
		return elementData;
	}
	
	
	public boolean isEmpty() {
		return size==0;
	}
	
	
	public void clear() {
		for(int i=0;isize) {
			throw new IndexOutOfBoundsException("插入元素下标越界");
		}
		//考虑是否需要扩容
		ensureCapacityInternal();
		System.arraycopy(elementData, index, 
						elementData, index+1, size-index);
		//替换指定下标位置元素
		elementData[index] = e;
		size++;
	}
	
	
	public E remove(int index) {
		//判断下标
		if(index<0 || index>=size) {
			throw new IndexOutOfBoundsException("删除元素下标越界");
		}
		//获取需要被删除的元素
		E oldValue = (E)elementData[index];
		System.arraycopy(
				elementData, index+1, 
				elementData, index, size-index-1);
		size--;
		return oldValue;
	}
	
	
	public int indexOf(E e) {
		if(e==null) {
			for(int i=0;i=size) {
			throw new IndexOutOfBoundsException("获取元素下标越界");
		}
		return (E)elementData[index];
	}
	
	
	private void ensureCapacityInternal() {
		if(elementData.length==0) {//第1次添加元素
			this.elementData = new Object[DEFAULT_CAPACITY];
		}else if(elementData.length==size) {//数组满了
			this.elementData = Arrays.copyOf(
				elementData,elementData.length+(elementData.length>>1));
		}
	}
	
	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder("[");
		for(int index=0;index list = new MyArrayList();
//		System.out.println(list.size);
//		System.out.println(Arrays.toString(list.elementData()));
		
		list.add("aaa");
		list.add(null);
		list.add("ccc");
		list.add("bbb");
		list.add("ccc");
		list.add(null);
		
		//[aaa,bbb,ccc,null]
		System.out.println(list);
		list.remove(null);
		list.remove("ccc");
		System.out.println(list);
		
//		System.out.println(list.indexOf(null));//1
//		System.out.println(list.indexOf("ccc"));//2
		
//		list.add(3,"mmm");
//		list.add(7,"nnn");
//		System.out.println(list);
//		
//		//[aaa,bbb,ccc,mmm,aaa,bbb,ccc,nnn]
//		String e = list.remove(2);
//		System.out.println("e:"+e);
//		System.out.println(list);
	}
}

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1039721.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号