1. 程式人生 > >Java圖書管理系統練習程式(四)

Java圖書管理系統練習程式(四)

Java圖書管理系統練習程式(四)

本部分主要介紹List的基本操作與Java中泛型的使用。

一、Java中泛型的使用

泛型,即“引數化型別”。一提到引數,最熟悉的就是定義方法時有形參,然後呼叫此方法時傳遞實參。那麼引數化型別怎麼理解呢?顧名思義,就是將型別由原來的具體的型別引數化,類似於方法中的變數引數,此時型別也定義成引數形式(可稱之為型別引數),然後在使用/呼叫時傳入具體的型別(型別實參)。

泛型的本質是為了引數化型別(在不建立新的型別的情況下,通過泛型指定的不同型別來控制形參具體限制的型別)。也就是說在泛型使用過程中,操作的資料型別被指定為一個引數,這種引數可以用在類、介面和方法中,分別被稱為泛型類、泛型介面、泛型方法。

例1.編寫一個類,將任意一個整數(int)按下面格式輸出,“我是一個數:100”。

那麼這個類很好寫,如下

public class OutNumber {
    private int n;
    public OutNumber(int n){
        this.n=n;
    }
    public void printN(){
        System.out.println("我是一個數 :"+n);
    }
}

那麼接下來,我們要再寫一個類,將一個字串(String)也要按以下的格式輸出,那麼這個類也很簡單,程式碼如下:

public class OutSting {
    private String n;
    public OutSting(String n){
        this.n=n;
    }
    public void printN(){
        System.out.println("我是一個數:"+n);
    }
}

仔細分析以上兩個類,我們發現,這兩個類對資料處理的方法是相同的,只是處理的型別是不同的。如果我們可以寫一個類,定義類時,並不指明資料的型別,在使用的時候再指明型別。那麼我們可以採用以下的方式。

public class OutNumber<E> {
    private E n;
    public OutNumber(E n){
        this.n=n;
    }
    public void printN(){
        System.out.println("我是一個數:"+n);
    }
}
public class Demo1 {
    public static void main(String[] args) {
        OutNumber<Integer> o1=new OutNumber<>(10);
        o1.printN();
        OutNumber<String> o12=new OutNumber<>("字串 ");
        o12.printN();
    }
}

這就是泛型的一種使用,稱為泛型類

1.泛型類

class 類名稱 <泛型標識>{

    private 泛型標識 成員變數名;

......

}

注意:

        泛型的型別引數只能是類型別(包括自定義類),不能是簡單型別(比如int與Integer)

        傳入的實參型別需與泛型的型別引數型別相同,

如OutNumber<Integer> o1=new OutNumber<>(10);

2.泛型介面

其使用方法與泛型類基本相同。

在本練習程式中,主要使用了泛型類和泛型介面。

二、List的基本操作

在本練習程式中,如果採用陣列存放若干個使用者的資訊,在宣告陣列時,就必須同時宣告陣列的長度,即我們的程式只能儲存多少個使用者,如果我們宣告的過大,會造成記憶體的浪費,如果我們宣告的陣列太小,即長度過短,會造成資料溢位的錯誤。

而List可以解決這個問題。它的大小是動態可改變的,其儲存的資料型別也是多樣的。例如以下程式碼

List<Student> lists=new ArrayList<>();

在以上程式碼中,List是一個介面,ArrayList是該介面的一個實現類。通過以上程式碼,我們即建立一個儲存Student物件的集合。

1.向集合中新增、刪除元素

Student student=new Student(1,"張三丰","武當山");
lists.add(student);//將student物件新增到集合中
lists.remove(student);//將student物件從集合中移除

2.判斷List中是否包含某個元素

lists.contains(student)

3.根據元素在集合中的索引值取得元素

Student stu=lists.get(0);

4.取得物件在集合中的索引值

lists.indexOf(student);

5.判斷集合是否為空

lists.isEmpty();

以上是在本練習程式中,用到的有關List集合的相關內容。其它的方法,可以參考Java API文件。