目錄:
要用Java實現記事本的功能。首先列出記事本所需功能:
如果這個記事本是某個大程序的其中一部分,也就是說還有上層程序,那麼上層程序就有可能會調用這個記事本以上列出的某個數據。
所以我們稱上述所列功能為這個記事本的 接口 。
那麼調用這些接口就是通過記事本這個類的public函數(method)。
但是,怎麼實現記錄呢?顯然所記錄的字符串不能記錄在某個數組裡,因為數組的長度是預先設定好的。這時就要用到 泛型容器 Arraylist<> ,這個arraylist也是系統的一個類,所以在使用它的時候要定義一個新的對象出來:private Arraylist<String> notes = new Arraylist<String>(); 還要聲明 import java.util.ArrayList;
arraylist可以任意往裡面存放數據,不限數目,這就實現了記事本的要求。
arraylist的基本操作: Arraylist<String> notes
通過以上操作實現記事本的接口函數。
1 package notebook; 2 3 import java.util.ArrayList; 4 5 public class Notebook { 6 7 private ArrayList<String> notes = new ArrayList<String>(); 8 9 public void add(String s) { 10 notes.add(s); 11 } 12 13 public int getSize() { 14 return notes.size(); 15 } 16 17 public void removeNote(int index) { 18 notes.remove(index); 19 } 20 21 public String getNote(int index) { 22 return notes.get(index); 23 } 24 25 public String[] list() { 26 String[] a = new String[notes.size()]; 27 notes.toArray(a); 28 return a; 29 } 30 31 public static void main(String[] args) { //test 32 Notebook nb = new Notebook(); 33 nb.add("frist"); 34 nb.add("second"); 35 System.out.println(nb.getSize()); 36 String[] a = nb.list(); 37 for(String s:a) { 38 System.out.println(s); 39 } 40 } 41 42 }Notebook.java
運行:
-----------------------------------------------------------------------------------------
另外,容器類型還有集合容器(Set),如HashSet,同樣是一個類,所具有的特性是內部元素是不排序的,不能有重復的元素,與數學裡的集合概念相同。
由程序運行結果可以看到ArrayList 和HashSet 這兩種容器的不同。
注意:由程序還可以看到,兩個容器的輸出不再是把容器的每個元素賦值給另一個數組,再通過for each循環把數組裡的每個元素輸出。在這裡我們是直接println出來了一個容器的對象,是可以的。這是因為:{
如第一個紅框所示,如果一個類裡有“public String toString() {}”函數,則可以直接println這個類的對象名,輸出的時候會自動調用toString函數的,如第二個紅框所示。所以,我們猜測,ArrayList和HashSet這兩個公共類源文件裡一定也有“public String toString() {}” 類似的函數。
}
-----------------------------------------------------------------------------------------
HashMap容器: HashMap<Key,Value>
一個鍵對應一個值,當給一個鍵多次put之後,這個鍵對應最後put的值,如圖:(一個輸入面額,輸出多對應美元名稱的程序,如:1美分叫做1penny。)
HashMap的遍歷: