Java圖書管理系統練習程序(四)數組
本部分主要介紹List的基本操做與Java中泛型的使用。this
1、Java中泛型的使用對象
泛型,即「參數化類型」。一提到參數,最熟悉的就是定義方法時有形參,而後調用此方法時傳遞實參。那麼參數化類型怎麼理解呢?顧名思義,就是將類型由原來的具體的類型參數化,相似於方法中的變量參數,此時類型也定義成參數形式(可稱之爲類型參數),而後在使用/調用時傳入具體的類型(類型實參)。索引
泛型的本質是爲了參數化類型(在不建立新的類型的狀況下,經過泛型指定的不一樣類型來控制形參具體限制的類型)。也就是說在泛型使用過程當中,操做的數據類型被指定爲一個參數,這種參數能夠用在類、接口和方法中,分別被稱爲泛型類、泛型接口、泛型方法。接口
例1.編寫一個類,將任意一個整數(int)按下面格式輸出,「我是一個數:100」。內存
那麼這個類很好寫,以下rem
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(); } }
這就是泛型的一種使用,稱爲泛型類get
1.泛型類
class 類名稱 <泛型標識>{
private 泛型標識 成員變量名;
......
}
注意:
泛型的類型參數只能是類類型(包括自定義類),不能是簡單類型(好比int與Integer)
傳入的實參類型需與泛型的類型參數類型相同,
如OutNumber<Integer> o1=new OutNumber<>(10);
2.泛型接口
其使用方法與泛型類基本相同。
在本練習程序中,主要使用了泛型類和泛型接口。
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文檔。