歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java基礎知識:對象容器

Java基礎知識:對象容器

日期:2017/3/1 9:10:39   编辑:Linux編程

目錄:

  • ArrayList 順序泛型容器
  • HashSet 集合容器
  • HashMap<Key,Value>容器

要用Java實現記事本的功能。首先列出記事本所需功能:

  1. 可以添加記錄(字符串);
  2. 可以獲得記錄條數;
  3. 可以刪除其中某一條記錄;
  4. 可以獲得指定第幾條的記錄;
  5. 可以列出所有的記錄。

如果這個記事本是某個大程序的其中一部分,也就是說還有上層程序,那麼上層程序就有可能會調用這個記事本以上列出的某個數據。

所以我們稱上述所列功能為這個記事本的 接口

那麼調用這些接口就是通過記事本這個類的public函數(method)。

但是,怎麼實現記錄呢?顯然所記錄的字符串不能記錄在某個數組裡,因為數組的長度是預先設定好的。這時就要用到 泛型容器 Arraylist<> ,這個arraylist也是系統的一個類,所以在使用它的時候要定義一個新的對象出來:private Arraylist<String> notes = new Arraylist<String>(); 還要聲明 import java.util.ArrayList;

arraylist可以任意往裡面存放數據,不限數目,這就實現了記事本的要求。

arraylist的基本操作: Arraylist<String> notes

  • notes.add()
  • notes.size()
  • notes.remove(index)
  • notes.get(index)
  • notes.toArray(String[] a=new String[notes.size()])

通過以上操作實現記事本的接口函數。

 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的遍歷:

Copyright © Linux教程網 All Rights Reserved