【泛型】案例讲解:自定义一个可以存放指定数据的容器
来源:互联网 发布:网络布线 价格 编辑:程序博客网 时间:2024/06/06 09:53
案例介绍:
要求自定义一个容器,次容器可以存放指定类型的数据,通过泛型来实现
案例设计:
- 设计定义一个泛型类
- 设计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 0
- 【泛型】案例讲解:自定义一个可以存放指定数据的容器
- 【内部类】案例讲解:使用内部类开发一个存放数据的容器
- 使用内部类来开发一个存放数据的容器
- 可以存放html控件的容器
- 一个保存数据的方法(可以切换存放的位置,可以设置密钥)
- c++容器存放不同结构的数据
- object[]可以存放哪些类型的数据?
- 一个mssqlserver表最多可以存放多少数据??
- 关联性容器存放自定义类型
- Postgres数据库是否可以存放数组形式的数据
- 自定义/指定 HDFS Block存放位置
- 第16天: 增加分区、删除分析、加载数据到指定分区讲解和案例操作
- MySQL可以存放的数据类型
- 自定义View做的一个Clock案例
- 自定义View做的一个Clock案例
- 自定义控件---------ViewPager的一个小案例
- 关联容器存放的是指针时,自定义比较函数模板
- C++对存放对象的Vector容器按自定义字段排序
- CCF模拟题——有趣的数(自己的见解)
- Android开发网【申明:来源于网络】
- RPC框架几行代码就够了
- HBase数据的读写流程总结
- TensorFlow中Sequence-to-Sequence样例代码详解
- 【泛型】案例讲解:自定义一个可以存放指定数据的容器
- web工程之SSM快速搭建示例程序
- 将字符串逆序
- jQuery AJAX中$.ajax方法参数详情级实例
- jsp中使用传参时出现中文乱码问题的解决方法
- JavaScript学习总结【2】JS基础
- 【C#】53. Async void VS Task
- 数组排序sortedArrayUsingComparator
- UVA227 puzzle 第一个超过一百行的代码。。。