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