通过泛型实现自定义存放指定数据的容器

本文介绍了一个简单的自定义泛型容器类MyContainer的实现过程,包括如何动态调整数组大小以容纳更多的元素,并提供了完整的Java代码示例。通过两种不同类型的数据(字符串和整数)演示了该容器类的使用方法。

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

import java.util.Arrays;
public class MyContainerDemo{
	public static void main(String[] args){
		MyContainer<String> container=new MyContainer<String>();
		for(int i=0;i<12;i++){
			container.add("元素"+(i+1));
		}
		for(int i=0;i<container.size();i++){
			System.out.println(container.get(i));
		}
		
		MyContainer<Integer> container1=new MyContainer<Integer>();
		for(int i=0;i<12;i++){
			container1.add(i+1);
		}
		for(int i=0;i<container.size();i++){
			System.out.println(container1.get(i));
		}
	}
}
//容器接口
interface Container<T>{
	public int size();
	public T get(int num);
	public void add(T obj);
}
//容器类
class MyContainer<T> implements Container<T>{
	//private T[] arr=new T[10];没有这种定义方法
	private Object[] arr=null;//数组用来存放数据的
	private int size=0;
	//无参构造方法,默认初始容量为10
	public MyContainer(){
		arr=new Object[10];
	}
	//有参构造方法,自定义初始容量
	public MyContainer(int num){
		arr=new Object[num];
	}
	//添加元素
	public void add(T obj){
		ensureCapity(size+1);
		arr[size]=obj;
		size+=1;
	}
	//返回容器中有多少元素
	public int size(){
		return size;
	}
	//返回下标为num的元素。
	public T get(int num){
		return (T)arr[num];
	}
	//检查容器是否装满,装满后自动扩容1.5倍
	private void ensureCapity(int num){
		if(num>arr.length){
			int oldlength=arr.length;
			int newlength=arr.length+(arr.length>>1);
			arr=Arrays.copyOf(arr,newlength);
		}
	}
}



上面显示不安全的操作,不影响程序的运行,如果想要消除,可以用注解的办法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值