数据结构之ArrayList

这篇博客介绍了如何从头实现一个简单的ArrayList类,包括添加、插入、删除、扩容等操作,并实现了一个基本的迭代器。此外,还给出了一个测试类用于展示ArrayList的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package MYArrayList;
/**
 * 
 * @author zz384dian
 * @time 2018-2-15
 * @param <E>
 * @cotent ArrayList的实现
 */
public class MyArrayList<E> {

	private Integer size;
	private Object objs[];
	
	public MyArrayList(){
		this(10);
	}
	
	public MyArrayList(Integer size){
		objs = new Object[size];
		this.size = 0;
	}
	
	//扩容
	public void ensureCapacity(){
		Object temp[] = objs;
		objs = new Object[objs.length + 10];
		for(int i = 0;i<temp.length;i++){
			objs[i] = temp[i];
		}
	}
	//添加
	public void add(Object obj){
		if(size == objs.length){
			ensureCapacity();
		}
		objs[size++] = obj;
	}
	//插入
	public void insert(int index,Object obj){
		if(size == objs.length){
			ensureCapacity();
		}
		for(int i = size-1;i>=index;i--){
			objs[i+1] = objs[i];
		}
		objs[index] = obj;
		size++;
	}
	//删除
	public void remove(int index){
		for(int i = index;i<size;i++){
			objs[i-1] = objs[i];
		}
		size--;
	}
	//置空
	public void makeEmpty(){
		size = 0;
	}
	//大小
	public int size(){
		return size;
	}
	//判断是否为空
	public boolean empty(){
		if(size == 0){
			return true;
		}
		return false;
	}
	//迭代器
	public MyIterator<E> iterator(){
		return new MyIterator(size,objs);
	}
}
package MYArrayList;
/**
 * 
 * @author zz384dian
 * @time 2018-2-15
 * @content Iterator的实现
 * @param <E>
 */
public class MyIterator<E> {

	private Integer size;
	private Object objs[];
	private Integer current;
	
	public MyIterator(int size, Object objs[]){
		this.size = size;
		this.objs = objs;
		current = -1;
	}
	public E hasNext(){
		return (E)objs[current];
	}
	
	public boolean Next(){
		current++;
		if(current < size){
			return true;
		}
		return false;
	}
}

package MYArrayList;
/**
 * 
 * @author zz384dian
 * @time 2018-2-15
 * @content Student类
 */
public class Student {
	
	private String name;
	private Integer age;
	
	public Student() {
		super();
	}

	public Student(String name, Integer age) {
		super();
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	}

}

package MYArrayList;
/**
 * 
 * @author zz384dian
 * @time 2018-2-15
 * @content 一个测试MyArrayList的Test类
 */
public class Test {

	public static void main(String[] args) {
		// TODO Auto-genrated method stub
		MyArrayList<Student> al = new MyArrayList<>();
		al.add(new Student("zs",26));
		al.add(new Student("jyh",30));

		al.insert(0, new Student("k",26));
		//System.out.println(al.size());
		
		MyIterator iter = al.iterator();
		
		while(iter.Next()){
			System.out.println(iter.hasNext());
		}
		
		
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值