0
点赞
收藏
分享

微信扫一扫

Java笔记14

天天天蓝loveyou 2022-03-19 阅读 47
java

Arraylist手工实现

package cn.sxt.Mycollection;

import javax.management.RuntimeErrorException;

public class SxtArrayList01 <E>{
	
	private Object [] element;
	private int size;
	
	public SxtArrayList01() {
	element =new Object[10];
	}
	
	public SxtArrayList01(int x)
	{
		if(x<0) {
			throw new RuntimeErrorException(null, "容器容量不能为负数");
		}
			
		element =new Object[x];
	}
	//实现扩容
	public void add(E ele)
	{
		if(size==element.length)
		{
			Object[] newArray =new Object[element.length*2];
			System.arraycopy(element, 0, newArray, 0, element.length);
			element=newArray;
		}
		element[size++]=ele;
	}
	
	public E get(int x)
	{
		checkRange(x);
		return (E) element[x];
	}
	
	public void set(E obj,int x)
	{
		checkRange(x);
		element[x]=obj;
	}
	
	public void checkRange(int x)
	{
		if(x<0||x>=size)
		{
			throw new RuntimeException("索引不合法"+x);
		}
	}
	
	public void remove(E obj) {
		for(int i=0;i<size;i++) {
			if(obj.equals(element[i])) {
				remove(i);
			}
		}
	}
	public void remove(int x) {
		int number =element.length-x-1;
		System.arraycopy(element, x+1, element, x, number);
		element[--size]=null;
	}
	
	
	@Override
	public String toString() {
		StringBuilder s=new StringBuilder();
		s.append('[');
		for(int i=0;i<size;i++)
		{
			s.append(element[i]+",");
		}
		s.append(']');
		return s.toString();
	}
	
	public static void main(String[] args) {
		SxtArrayList01<String > s1= new SxtArrayList01<String>();
		for(int i=0;i<40;i++)
			s1.add("zt"+i);
			System.out.println(s1);
		s1.set("asd", 2);
		s1.remove(2);
		System.out.println(s1);
	}

}
举报

相关推荐

0 条评论