【泛型】案例讲解:自定义一个可以存放指定数据的容器

案例介绍:

要求自定义一个容器,次容器可以存放指定类型的数据,通过泛型来实现

案例设计:
- 设计定义一个泛型类
- 设计add方法给容器添加数据
- 设计get方法获取容器中指定位置的数据
- 设计size方法获取容器中数据的多少
- 要求容器超过容量要自动扩容

Code Demo:

package Genericity;

import java.util.Arrays;

public class ContainerDemo {


    public static void main(String[] args) {
        // TODO Auto-generated method stub
        IContainer<String> list=new Container<String>();
        for(int i=0;i<9;i++){
            list.add("String"+i);
        }
        list.print();
    }

}

interface IContainer<T>{
    public void add(T obj);
    public void print();
    public T get(int index);
    public int size();
}

class Container<T> implements IContainer<T>{
    //不能创建泛型数据,所以可以创建一个object类型的数组
    private Object[] list=null;
    public int size=0;

    //初始大小为10
    public Container(){
        list=new Object[10];
    }
    //指定容器的大小
    public Container(int capacity){
        list=new Object[capacity];
    }
    public T get(int index) {
        return  (T)list[index-1];
    }

    public void add(T obj) {
        ensureCapacity(size+1);
        list[size++]=obj;
    }
    public int size(){
        return size;    
    }

    private void ensureCapacity(int size){
        if(size>0.8*list.length){
            //扩容为原有容量的1.5倍
            int oldCapacity=list.length;
            int newCapacity=oldCapacity+(oldCapacity>>1);
            list=Arrays.copyOf(list, newCapacity);
        }
    }
    public void print(){
        for(int i=0;i<size;i++){
            System.out.println("String:"+i);
        }
    }

}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值