8 陣列

9.1 使用陣列儲存資料

陣列是一組型式相同的資料。 如
    double[] price = new double[10];
界定一含10個倍準浮點數的陣列。

台北也在飄雪了

9.2 陣列註標

讀寫陣列中的項目,使用註標(subscript),如
    price[4] = 29.95;
    System.out.println("The price of this item is $" + price[4]);

例題: BarGraph.java

9.3 陣列參數和回值

例題: 參數是陣列
  1. AverageSalary.java
  2. RaiseSalary.java
例題: 回值是陣列
  1. SalaryBetween.java

9.4 簡單的陣列演算法

  1. Finding a value : Find.java
  2. Counting : Count.java
  3. Collecting Matches : Matches.java
  4. Removing an Element :
    1. in unordered array : Remove1.java
    2. in ordered array : Remove2.java

9.5 平行陣列

例題:
  1. 三個平行陣列 : name, price and score
    PlotData1.java
  2. 一個物件陣列, 每個物件有三項資料 :
    PlotData2.java

9.6 陣列做為物件的資料

例題:
  1. 點陣列 : CloudTest.java
  2. 多邊形(polygon), 一個含點陣列的物件 : PolygonTest.java

9.7 向量 Vectors

向量是可自動擴充的物件容器(container)。

物件的加入

加物件到向量末尾,使用 addElement 方法
        Vector staffVector = new Vector();
        String more;
        do {
            String name = readString("Name: ");
            double salary = readDouble("Salary: ");
            Employee e = new Employee(name, salary);
            staffVector.addElement(e);
        }

物件的讀取

讀取向量中的物件,使用 elementAt 方法
        // print out the whole vector data
        int i;
        for (i=0; i < staffVector.size(); i++) {
            Employee e = (Employee) staffVector.elementAt(i);
            System.out.println(e.getName() + " " + e.getSalary());
        }

        // another way to print
        for (Enumeration e = staffVector.elements(); e.hasMoreElements(); ) {
            System.out.println(e.nextElement().toString());  //?
        }

設定物件

設定向量中的物件,使用 setElementAt 方法。 計算向量中物件的個數用 size 方法。
        staffVector.setElementAt(boss, 0);
        int n = staffVector.size();
注意: 求陣列、向量、和字串的長度,用法不同
        Array   a.length
        Vector  a.size()
        String  a.length()

向量換成陣列

在程式中使用向量儲存輸入資料,處理資料時再換成陣列。 如此即可自動擴充物件容器的容量, 又可具有使用陣列處理資料的方便。
        // converting Vectors to Arrays
        Employee[] staff = new Employee[staffVector.size()];
        staffVector.copyInto(staff);

例題: Staff.java

9.8 二維陣列

例題: Table2.java