Java, Only Java!

          統(tǒng)計(jì)

          留言簿(20)

          積分與排名

          好友空間

          文檔技巧

          閱讀排行榜

          評(píng)論排行榜

          《Java大學(xué)教程》—第17章 Java聚焦類框架

          由所有聚焦類構(gòu)成,在java.util包中,包含三個(gè)重要接口:
          *    List列表:元素為單個(gè)對(duì)象,元素在列表中是有序、可重復(fù)
          *    Set集合:元素為單個(gè)對(duì)象,元素在集合中無(wú)序、不可重復(fù)
          *    Map映射:元素為成對(duì)對(duì)象(第一個(gè)對(duì)象是關(guān)鍵字,第二個(gè)對(duì)象是值),元素在映射中無(wú)序,關(guān)鍵字不可重復(fù)
          注:JCF不能存儲(chǔ)基本數(shù)據(jù)類型。

          17.2 List接口和ArrayList類
          *    ArrayList類
          *    LinkedList類

          17.2.1    泛型(generics):允許設(shè)定存在在特定聚焦類對(duì)象中的對(duì)象類型。可以將一個(gè)或多個(gè)類型作為參數(shù)發(fā)送到一個(gè)類(或接口)中,亦被稱為參數(shù)化類型。
          優(yōu)點(diǎn):允許編譯檢查類型;不必進(jìn)行對(duì)象類型轉(zhuǎn)換;避免產(chǎn)生ClassCastException異常。

          17.2.2    使用接口類型代替實(shí)現(xiàn)類型作為函數(shù)的形參
          允許將來(lái)修改實(shí)現(xiàn)的方式而不必修改形參中對(duì)象的類型。

          17.2.3    List接口的方法
          操作:增加(add)?將元素插在列表的末尾;?將元素插入到列表中指定的位置。
          注:使用索引插入?yún)?shù)到列表中時(shí),必須保證索引是當(dāng)前列表中的有效位置
          修改(set)、刪除(delete)
          列表:顯示(toString)、總數(shù)(size)、是否空(isEmpty)
          元素:位置(indexOf)返回指定對(duì)象在列表中第一次出現(xiàn)時(shí)的索引。
          獲取(get)、存在(contains)

          17.3    增強(qiáng)的for循環(huán):數(shù)組、List接口、Set接口
          不能用于修改或刪除原始集合中的元素,因?yàn)榫幾g可以通過(guò),但是有可能導(dǎo)致程序結(jié)果不可預(yù)測(cè)。

          17.4    Set接口和HashSet類
          *    HashSet類
          *    TreeSet類

          17.4.1    Set接口的方法
          操作:增加和修改(add)、刪除(remove)
          列表:顯示(toString)、總數(shù)(size)、是否空(isEmpty)
          元素:獲取(get)、存在(contains)

          17.4.3    Iterator接口:用于修改和刪除Set中的元素
          使用Set對(duì)象中提供的Iterator對(duì)象。

          17.5    Map接口和HashMap類
          *    HashMap類
          *    TreeMap類

          Map接口的方法:
          操作:增加和修改(put)、刪除(remove)
          元素:關(guān)鍵字存在(containsKey)、值存在(containsValue)、值獲取(get)

          17.6    JCF中使用自定義類
          方法重寫(xiě):toString();    equals();    hashCode()

          自測(cè)題:
          1. 三種接口的區(qū)別:
          *    List列表:元素為單個(gè)對(duì)象,元素在列表中是有序、可重復(fù)
          *    Set集合:元素為單個(gè)對(duì)象,元素在集合中無(wú)序、不可重復(fù)
          *    Map映射:元素為成對(duì)對(duì)象(第一個(gè)對(duì)象是關(guān)鍵字,第二個(gè)對(duì)象是值),元素在映射中無(wú)序,關(guān)鍵字不可重復(fù)

          2.    Map<String, Student> javaStudents = new HashMap<String, Student>();
          a)    允許將來(lái)修改實(shí)現(xiàn)的方式而不必修改形參中對(duì)象的類型。

          b)    可以將一個(gè)或多個(gè)類型作為參數(shù)發(fā)送到一個(gè)類(或接口)中,亦被稱為參數(shù)化類型。
          優(yōu)點(diǎn):允許編譯檢查類型;不必進(jìn)行對(duì)象類型轉(zhuǎn)換;避免產(chǎn)生ClassCastException異常。

          c)    javaStudents.put("U0012345","Fadi");
          javaStudents定義的是Student類型,不能接收String類型的數(shù)據(jù)。

          3.    StockItem類
          a)   

          public String toString(){
              return "("+stockNumber+","+name+","+price+","+totalStock+")\n";
          }

          b)

          public boolean equals(Object objIn){
              StockItem st = (StockItem) objIn;
              return stockNumber.equals(st.stockNumber);
          }

          c)

          public int hashCode(){
              return stockNumber.hashCode();
          }

          4.
          a)

          String tmpString;
              boolean first=true;
              if (regNums.size()==0){
                  tmpString="{}";
              } else {
                  StringBuilder sb = new StringBuilder();
                  for (String item: regNums){
                      if (first)    {
                          sb.append("{"+item);
                          first = false;
                      } else {
                          sb.append(","+item);
                      }
                  }
                  sb.append("}");
                  System.out.println(sb);

          b)
          Iterator<String> elements = regNums.iterator();
              while(elements.hasNext()){
                  String item = elements.next();
                  if (item.charAt(item.length()-1)=='S'
                      elements.remove();
              }

          編程練習(xí):代碼附件
          1.    NameStack.java    NameStackException.java    NameStackTest.java
          a)    因?yàn)樾枰勺兇笮〉拇鎯?chǔ)空間,而存儲(chǔ)的對(duì)象必須是有序的,但是是可以重復(fù)的。

          2.    CarRegister.java    CarRegisterException.java        CarRegisterTest.java
          a)    因?yàn)樾枰勺兇笮〉拇鎯?chǔ)空間,而存儲(chǔ)的對(duì)象可以是無(wú)序的,但是必須惟一。

          3.    Book.java        Library.java    LibraryTest.java

          4.    Bank.java        BankAccount.java        BankTest.java
          a)    HashMap類適合代替數(shù)組實(shí)現(xiàn)Bank類。因?yàn)槠淇梢詽M足成對(duì)對(duì)象集合的需要,還可以確定關(guān)鍵字。

          posted on 2016-10-01 17:12 zYx.Tom 閱讀(438) 評(píng)論(0)  編輯  收藏 所屬分類: 1.Java世界

          主站蜘蛛池模板: 甘肃省| 江油市| 桂平市| 高尔夫| 大洼县| 镇坪县| 凤山市| 同心县| 阜阳市| 河北省| 句容市| 永川市| 普定县| 昌吉市| 五寨县| 嵊州市| 乐安县| 垫江县| 北海市| 安康市| 乐业县| 平和县| 山西省| 锦州市| 河东区| 曲麻莱县| 金昌市| 安宁市| 清流县| 襄垣县| 来宾市| 内丘县| 孝义市| 清丰县| 墨江| 富裕县| 辰溪县| 固原市| 镶黄旗| 嘉善县| 平昌县|