你的位置:首页 > Java教程

[Java教程]使用内部类开发一个存放数据的容器


案例介绍:开发一个容器用来存放键值对,键存放英文名字,值存放中文名字,对键值对使用内部类来进行封装;

案例设计:

①   使用静态内部类封装键值对数据;

②   容器默认大小为5,超过就扩容其2倍;

③   通过调用entryArrays方法返回容器中的数据;

 1 import java.util.Arrays; 2 public class EntryDemo{ 3   public static void main(String []args){ 4     MyContainer container=new MyContainer(); 5     container.put("jack","杰克"); 6     container.put("jay","周杰伦"); 7     container.put("john","约翰"); 8     container.put("rose","罗斯"); 9     container.put("jack","张三");10     11     MyContainer.Entry[] entrys=container.entryArrays();12     for(int i=0;i<entrys.length;i++){13       MyContainer.Entry entry=entrys[i];14       System.out.println(entry.getKey()+"--"+entry.getValue());15     }16   }17 }18 19 class MyContainer{20   //存放entry对象的数组,默认大小为521   private Entry[] entrys=new Entry[5];22   private int count=0;23   24   //对外提供一个接口向容器中存放封装好的数据25   public void put(String key,String value){26     Entry entry=new Entry();27     entry.setKey(key);28     entry.setValue(value);29     entrys[count++]=entry;//存放entry对象到数组中30     //数组的扩容31     if(count>=entrys.length){32       //扩容后的新数组大小33       int newCapacity=entrys.length*2;34       //把老数组中的数据复制到长度为newCapacity的新数组中35       entrys=Arrays.copyOf(entrys,newCapacity);36     }37   }38   39   //把容器中的有数据的内容返回40   public Entry[] entryArrays(){41     return Arrays.copyOfRange(entrys,0,count);42   }43   44   //把键值对封装在Entry对象中45   public static class Entry{46     private String key;47     private String value;48     public void setKey(String key){49       this.key=key;50     }51     public String getKey(){52       return key;53     }54     public void setValue(String value){55       this.value=value;56     }57     public String getValue(){58       return value;59     }60   }61 }