案例介绍:
要求自定义一个容器,次容器可以存放指定类型的数据,通过泛型来实现
案例设计:
- 设计定义一个泛型类
- 设计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);
}
}
}