案例介紹:開發一個容器用來存放鍵值對,鍵存放英文名字,值存放中文名字,對鍵值對使用內部類來進行封裝;
案例設計:
① 使用靜態內部類封裝鍵值對數據;
② 容器默認大小為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對象的數組,默認大小為5 21 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 }