




已閱讀5頁,還剩31頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
使用 Java 集合框架Sang Shin, , Sun Microsystems, 本動手實驗室將介紹如何使用 Java 集合框架(Java Collection Framework)開發 Java 應用程序。預計時間:75 分鐘軟件需求開始之前,需要在您的計算機中安裝以下軟件。 Java Standard Development Kit (JDK)版本 5.0(下載)。 o 如果已經安裝了 JDK 5.0,那么可以跳過此步驟。 o 安裝文件的名稱如下所示(針對 JDK 5.0 更新版本 x)。 jdk-1_5_0_xx-windows-i586-p.exe(Windows) jdk-1_5_0_xx-linux-i586.bin(Linux) jdk-1_5_0_xx-solaris-i586.sh(Solaris x86) NetBeans IDE 5.5(下載) o 在安裝 NetBeans IDE 5.5 時,安裝程序會詢問使用哪個版本的 JDK。 1016_javacollections.zip(下載) o 其中含有本文檔和實驗室內容o 下載此壓縮文件,并將它解壓到任意目錄中 變更記錄 2007 年 2 月 9 日:創建 2007 年 4 月 12 日:課外練習由使用 TreeSet 變更為 HashSet實驗室練習 練習 1:構建和運行使用 Set 集合對象的應用程序(30 分鐘) 練習 2:構建和運行使用 List 集合對象的應用程序(30 分鐘) 練習 3:構建和運行使用 Map 集合對象的應用程序(30 分鐘) 練習 4:Iterator(10 分鐘) 練習 5:算法 課外練習(針對 Sang Shin“Java EE 編程在線課程”的學習者) 練習 1:構建和運行 Set 集合對象 Set 接口擴展了 Collection 接口,且根據定義它也禁止在集合中出現重復元素。它采用所有原始方法,并且未引入任何新方法。具體的 Set 實現類依賴于該對象的 equals()方法,其作用是檢驗等同性。集合框架為 Set 接口提供了兩種通用實現:HashSet 和 TreeSet。您偶爾也會用 HashSet 來存儲不重復的集合。出于提高效率起見,添加到 HashSet 中的對象需要用一種能夠合理分配哈希碼的方式來實現 hashCode()方法。而大多數的系統類覆蓋了 Object 中缺省的 hashCode()實現,因而當您自己創建要添加到 HashSet 的類時,請記住要覆蓋 hashCode()。當需要以一種排序的方式從集合中提取元素的時候,TreeSet 實現很有用。為了正確運行,添加到 TreeSet 中的元素必須是可排序的。集合框架為 Comparable 元素添加了支持,稍后將詳細介紹。當前,假定樹知道如何保證 java.lang 封裝類的元素排好序。通常,將元素添加到 HashSet ,然后將該集合轉換成一個 TreeSet 進行排序遍歷,這樣更快一些。欲優化 HashSet 的空間利用,可以調整初始容量和加載因子。TreeSet 不含調優選項,因為樹總是平衡的,這確保了用于插入、刪除和查詢的 log(n)性能。 1. 構建和運行使用 HashSet 的應用程序 2. 通過 HashSet 查找重復元素 3. 通過 HasetSet 2 查找重復元素 4. 構建和運行使用 TreeSet 的應用程序 5. 構建和運行使用 LinkedHashSet 的應用程序 6. Set 和多態性(1.1)構建和運行使用 HashSet 的應用程序在本步驟中,我們將構建一個使用 HashSet 的應用程序。您將實踐 HashSet 類中的各個方法。以下內容引用自在線 HashSet JavaDoc。 此類依靠散列表(實際上是 HashMap 實例)的支持來實現 Set 接口。它不保證 set 的迭代順序;通常,它也不保證該順序固定不變。此類允許 null 元素。此類為基本操作(add、remove、contains 和 size)提供固定的時間性能,假定散列函數使元素合理地分散于多個散列桶中。對這個集合進行迭代,所需的時間需同 HashSet 實例的總大?。ㄔ氐臄盗浚┘由现С炙?HashMap 實例的容量(桶的數量)成比例。因而,當迭代性能很重要時,一定不要將初始容量設置得過高(或將加載因子設置得過低)。0. 如果尚未啟動 NetBeans IDE,請啟動它。1. 創建一個新的 NetBeans 項目。 選擇 文件-新建項目(Ctrl+Shift+N)。此時將出現 新建項目 對話框。 在 選擇項目 窗格中,選擇 類別 列表中的 Java,并選擇 項目 列表中的 Java 應用程序。單擊 下一步 按鈕。 在 名稱和位置 窗格中的 項目名稱 字段中輸入 Set-HashSet-add 作為項目名。 在 創建主類 字段中,選擇 IDE 默認的 sethashsetadd.Main。 單擊 完成 按鈕。 圖 1.10:創建一個新項目 注意到出現了 Set-HashSet-add 項目,而 IDE 生成的 Main.java 則顯示于 NetBeans IDE 的源編輯窗口中。 2. 根據代碼 1.10 修改生成 Main.java 的 IDE。仔細閱讀以下代碼,特別要注意粗體注釋。package sethashsetadd;import java.util.HashSet;public class Main public static void main(String args) / Create HashSet object HashSet hs = new HashSet(5, 0.5f); System.out.println(hs.add(one); System.out.println(hs.add(two); System.out.println(hs.add(three); System.out.println(hs.add(four); System.out.println(hs.add(five); / Print out the HashSet object System.out.println(hs); / Add a duplicate item to the HashSet Boolean b = hs.add(one); System.out.println(Duplicate item allowed = + b); System.out.println(hs); 代碼 1.10:經過修改的 Main.java 文件3. 生成和運行項目 右鍵單擊 Set-HashSet-add 項目并選擇 運行。右鍵單擊 Set-HashSet-add 項目并選擇 運行。 在 輸出 窗口中查看結果。(如圖 1.11 所示) truetruetruetruetrueone, two, five, three, fourDuplicate item allowed = falseone, two, five, three, four圖 1.11:運行 Set-HashSet-add 應用程序的結果故障排除 和 解決方案:如果您在編譯過程中看到以下警告消息,這是預料之中的。這條警告消息是由 javac 編譯器生成的,是由于在使用泛型時未指定集合類型。當前,忽略該消息即可。 將源文件編譯到 C:handson2developmentjavacollectionssamplesSet-HashSet-addbuildclasses注意:C:handson2developmentjavacollectionssamplesSet-HashSet-addsrcsethashsetaddMain.java 使用了未經檢查或不安全的操作。注意:要了解詳細信息,請使用 -Xlint:unchecked 重新編譯。 解決方案:此練習作為可運行的 NetBeans 項目包含在動手實驗室的壓縮文件中。項目文件位于 /javacollections/samples/Set-HashSet-add。您可以打開并運行它。4. 作為練習,請執行以下操作 創建您自己的 NetBeans 項目,并將其命名為 MyHashSet 創建您自己的 HashSet 對象,初始容量設為 5 將以下對象添加到新創建的 HashSet 對象中 o 2 個 String 對象o 2 個 MyOwnClass 對象(首先需要創建 MyOwnClass.java)o 3 個 Integer 對象 顯示 HashSet 對象返回練習頂部(1.2)通過 HashSet 查找重復元素1. 創建一個新的 NetBeans 項目 選擇 文件-新建項目(Ctrl+Shift+N)。此時將出現 新建項目 對話框。 在 選擇項目 窗格中,選擇 類別 列表中的 Java,并選擇 項目 列表中的 Java 應用程序。單擊 下一步 按鈕。 在 名稱和位置 窗格中的 項目名稱 字段中輸入 Set-HashSet-FindDup 作為項目名。 在 創建主類 字段中,使用 IDE 提供的缺省值 sethashsetfinddup.Main。 單擊 完成 按鈕。 注意到出現了 Set-HashSet-FindDup 項目,IDE 生成的 Main.java 顯示于 NetBeans IDE 的源編輯器窗口中。 2. 將 IDE 生成的 Main.java 文件修改為代碼 1.20 所示的內容。仔細學習代碼,需要特別注意黑體部分。 package sethashsetfinddup;import java.util.HashSet;import java.util.Set;public class Main public static void main(String args) / Set up test data String name = new String(Sang), new String(Shin), new String(Boston), new String(Shin) ; / Create HashSet object instance and / assign it to a variable of Set type. Set s = new HashSet(); for (int i=0; iname.length; i+) if (!s.add(namei) System.out.println(Duplicate detected: +namei); System.out.println(s.size()+ distinct words detected: +s); 代碼 1.20:經過修改的 Main.java 文件3. 生成和運行項目 右鍵單擊 Set-HashSet-FindDup 項目并選擇 運行。 在 輸出 窗口中查看結果。(如圖 1.21 所示) Duplicate detected: Shin3 distinct words detected: Shin, Sang, Boston圖 1.21:運行 Set-HashSet-FindDup 應用程序的結果解決方案:此練習作為可運行的 NetBeans 項目包含在動手實驗室的壓縮文件中。項目文件位于 /javacollections/samples/Set-HashSet-FindDup。您可以打開并運行它。4. 作為練習,請完成以下任務: 根據以下要求修改 Main.java o 創建含有多個重復元素的名為 myownnames 的 Strings 數組 o 通過數組創建一個 HashSet 對象,顯示該對象并確保在此集合中不含重復值。 返回練習頂部(1.3)通過 HashSet 2 查找重復元素在此步驟中,您將實踐 removeAll()方法。1. 創建一個新的 NetBeans 對象 選擇 文件-新建項目(Ctrl+Shift+N)。此時將出現 新建項目 對話框。 在 選擇項目 窗格中,選擇 類別 列表中的 Java,并選擇 項目 列表中的 Java 應用程序。單擊 下一步 按鈕。 在 名稱和位置 窗格中的 項目名稱 字段中輸入 Set-HashSet-FindDup2 作為項目名。 對于 創建主類 字段,使用IDE 所提供的默認值。 單擊 完成 按鈕。 注意到出現了 Set-HashSet-FindDup2 項目,IDE 生成的 Main.java 顯示于 NetBeans IDE 的源編輯器窗口中。 2. 將 IDE 生成的 Main.java 文件修改為代碼 1.30 所示的內容。仔細學習代碼,需要特別注意黑體部分。 package sethashsetfinddup2;import java.util.HashSet;import java.util.Set;public class Main public static void main(String args) / Set up test data String name = new String(Sang), new String(Shin), new String(Boston), new String(Shin) ; Set uniques = new HashSet(); Set dups = new HashSet(); for (int i=0; iname.length; i+) if (!uniques.add(namei) dups.add(namei); / Remove items that duplicates uniques.removeAll(dups); System.out.println(Unique words: + uniques); System.out.println(Duplicate words: + dups); 代碼 1.30:經過修改的 Main.java 文件3. 生成和運行項目 右鍵單擊 Set-HashSet-FindDup2 項目并選擇 運行。 在 輸出 窗口中查看結果。(如圖 1.31 所示) Unique words: Sang, BostonDuplicate words: Shin圖 1.31:運行 Set-HashSet-FindDup2 應用程序的結果解決方案:此練習作為可運行的 NetBeans 項目包含在動手實驗室的壓縮文件中。項目文件位于 /javacollections/samples/Set-HashSet-FindDup2。您可以打開并運行它。4. 作為練習,請完成以下任務: 根據以下要求修改 Main.java 或創建您自己的項目o 創建含多個重復值的名為 myownnames 的 Strings 數組 o 創建兩個 HashSet 對象,使用 removeAll()方法從原始集合里刪除帶重復值的條目。 o 顯示這兩個 HashSet 對象返回練習頂部(1.4)構建和運行使用 TreeSet 的應用程序在本步驟中,我們將構建一個使用 TreeSet 的應用程序,并且將實踐 TreeSet 類的各個方法。以下內容引用自在線 HashSet JavaDoc。 此類實現了 Set 接口,由 TreeMap 實例提供支持。此類保證排好序的集合將以元素升序排列,排序根據元素的 自然順序 (參見 Comparable),或者由集合創建時提供的比較器進行排序,這取決于使用哪個構造函數。此實現保證了基本操作(add、remove 和 contains)所需的 log(n)時間消耗。請注意,如果由集合所維持的排序(而不論是否提供顯式的比較器)要正確地實現 Set 接口,那么它就必須和 equals 保持一致(請參考 Comparable 或者 Comparator 以對 和 equals 相一致有一個精確的定義。)。這是因為 Set 接口是根據 equals 操作定義的,但 TreeSet 實例使用其 compareTo (或 compare)方法執行所有的鍵值比較,從集合的角度講,使用此方法而注定相等的兩個鍵值是相等的。Set 的行為是被定義好的,即使它的排序和 equals 不一致;它也只是沒有遵照 Set 接口的總體約束而已。1. 創建一個 NetBeans 項目 選擇 文件-新建項目(Ctrl+Shift+N)。此時將出現 新建項目 對話框。 在 選擇項目 窗格中,選擇 類別 列表中的 Java,并選擇 項目 列表中的 Java 應用程序。單擊 下一步 按鈕。 在 名稱和位置 窗格中的 項目名稱 字段中輸入 Set-TreeSet 作為項目名。 對于 創建主類 字段,使用 IDE 所提供的默認值。 單擊 完成 按鈕。 注意到出現了 Set-TreeSet ,IDE 生成的 Main.java 顯示于 NetBeans IDE 的源編輯器窗口中。 2. 將 IDE 生成的 Main.java 文件修改為代碼 1.40 所示的內容。package settreeset;import java.util.Set;import java.util.TreeSet;public class Main public static void main(String args) Set ts = new TreeSet(); ts.add(one); ts.add(two); ts.add(three); ts.add(four); ts.add(three); System.out.println(Members from TreeSet = + ts); Set ts2 = new TreeSet(); ts2.add(1); ts2.add(2); ts2.add(3); ts2.add(4); ts2.add(2); System.out.println(Members from TreeSet = + ts2); 代碼 1.40:經過修改的 Set-TreeSet.java 文件3. 生成和運行項目 右鍵單擊 Set-TreeSet 項目并選擇 運行。 在 輸出 窗口中查看結果。(如圖 1.41 所示) Members from TreeSet = four, one, three, twoMembers from TreeSet = 1, 2, 3, 4圖 1.41:運行 Set-TreeSet 應用程序的結果解決方案:此練習作為可運行的 NetBeans 項目包含在動手實驗室的壓縮文件中。項目文件位于 /javacollections/samples/Set-TreeSet。您可以打開并運行它。返回練習頂部(1.5)構建和運行使用 LinkedHashSet 的應用程序1. 創建一個新的 NetBeans 項目 選擇 文件-新建項目(Ctrl+Shift+N)。此時將出現 新建項目 對話框。 在 選擇項目 窗格中,選擇 類別 列表中的 Java,并選擇 項目 列表中的 Java 應用程序。單擊 下一步 按鈕。 在 名稱和位置 窗格中 項目名稱 字段中輸入 Set-LinkedHashSet 作為項目名。 對于 創建主類 字段,使用 IDE 所提供的默認值。 單擊 完成 按鈕。 注意到出現了 Set-LinkedHashSet 項目,IDE 生成的 Main.java 顯示于 NetBeans IDE 源編輯器窗口中。 2. 將 IDE 生成的 Main.java 文件修改為代碼 1.50 所示的內容。仔細學習代碼,需要特別注意黑體部分。 package setlinkedhashset;import java.util.LinkedHashSet;import java.util.Set;public class Main public static void main(String args) Set ts = new LinkedHashSet(); ts.add(one); ts.add(two); ts.add(three); ts.add(four); ts.add(two); System.out.println(Members from LinkedHashSet = + ts); Set ts2 = new LinkedHashSet(); ts2.add(2); ts2.add(1); ts2.add(3); ts2.add(3); System.out.println(Members from LinkedHashSet = + ts2); 代碼 1.50:經過修改的 Main.java 文件3. 生成和運行項目 右鍵單擊 Set-LinkedHashSet 項目并選擇 運行。 在 輸出 窗口中查看結果。(如圖 1.51 所示) Members from LinkedHashSet = one, two, three, fourMembers from LinkedHashSet = 2, 1, 3圖 1.51:運行 Set-LinkedHashSet 應用程序的結果解決方案:此練習作為可運行的 NetBeans 項目包含在動手實驗室的壓縮文件中。項目文件位于 /javacollections/samples/Set-LinkedHashSet。您可以打開并運行它。返回練習頂部(1.6)Set 和多態性1. 創建一個新的 NetBeans 項目 選擇 文件-新建項目(Ctrl+Shift+N)。此時將出現 新建項目 對話框。 在 選擇項目 窗格中,選擇 類別 列表中的 Java,并選擇 項目 列表中的 Java 應用程序。單擊 下一步 按鈕。 在 名稱和位置 窗格中的 項目名稱 字段中輸入 Set-Polymorphism 作為項目名稱。 對于 創建主類 字段,使用IDE 所提供的默認值。 單擊 完成 按鈕。 注意到出現了 Set-Polymorphism 項目,IDE 生成的 Main.java 顯示于 NetBeans IDE 的源編輯器窗口中。 2. 將 IDE 生成的 Main.java 文件修改為代碼 1.60 所示的內容。仔細學習代碼,需要特別注意黑體部分。 package setpolymorphism;import java.util.HashSet;import java.util.LinkedHashSet;import java.util.Set;import java.util.TreeSet;public class Main public static void main(String args) / Set up test data String numbers = new String(2), new String(3), new String(4), new String(1), new String(2) ; Set s = new HashSet(); MyOwnUtilityClass.checkDuplicate(s, numbers); s = new TreeSet(); MyOwnUtilityClass.checkDuplicate(s, numbers); s = new LinkedHashSet(); MyOwnUtilityClass.checkDuplicate(s, numbers); 代碼 1.60:經過修改的 Main.java 文件3. 編寫 MyOwnUtilityClass.java.package setpolymorphism;import java.util.Set;public class MyOwnUtilityClass public static void checkDuplicate(Set s, String numbers) for (int i=0; inumbers.length; i+) if (!s.add(numbersi) System.out.println(Set type = + s.getClass().getName()+ + s); 代碼 1.61:MyOwnUtilityClass.java4. 生成和運行項目 右鍵單擊 Set-Polymorphism 項目并選擇 運行。 在 輸出 窗口中查看結果。(如圖 1.62 所示) Set type = java.util.HashSet 3, 2, 4, 1Set type = java.util.TreeSet 1, 2, 3, 4Set type = java.util.LinkedHashSet 2, 3, 4, 1圖 1.62:運行 Set-Polymorphism 應用程序的結果解決方案:本練習作為可運行的 NetBeans 項目包含在動手實驗室的壓縮文件中。項目文件位于 /javacollections/samples/Set-Polymorphism。您可以打開并運行它。返回練習頂部結束語在本練習中,您了解了如何使用 HashSet、TreeSet 和 LinkedHashSet。返回頂部練習 2:構建和運行使用 List 集合對象的應用程序List 接口擴展了 Collection 接口,從而定義排好序的、允許重復值的集合。該接口添加了定位操作,以及只對列表的部分進行操作的功能。集合框架中有兩個通用的 List 實現:ArrayList 和 LinkedList。使用這兩種實現中的哪個取決于具體的要求。如果需要支持隨機訪問,要在除結尾以外的任意位置插入或刪除元素,那么 ArrayList 是最佳選擇。如果需要從 list 中部頻繁添加和刪除元素,并且只按順序訪問列表元素,那么 LinkedList 的實現則更好一些。在本步驟中,將構建一個使用 ArrayList 的應用程序。您將練習 ArrayList 類的幾個方法。以下引用自在線的 ArrayList 的 JavaDoc。ArrayList 是 List 接口的一個可以重新改變尺寸的數組實現。它實現所有可選 List 操作,并允許所有元素,包括 null 元素。除了實現 List 接口,此類還提供多個方法以操縱用于列表內部存儲的數組的尺寸。(除了非同步這一點,此類大體上等同于 Vector)方法 size、isEmpty、get、set、iterator 和 listIterator 操作都在固定的時間運行。而 Add 操作在固定的時間里分次運行,即,添加 n 個元素需要的時間為 O(n)。其他所有操作都以線性時間運行(粗略地講)。相比 LinkedList 實現而言,固定因數較低。每個 ArrayList 實例都有一個容量。容量是用于存儲列表中元素的數組尺寸。容量通常至少也和列表的尺寸一樣。隨著元素被添加進 ArrayList,其容量也會自動增大。并沒有明確的增大規則,增大無非基于這樣一個事實,即添加元素會在固定的時間里分次運行。應用程序可以在使用 ensureCapacity 操作添加大量元素前增大 ArrayList 實例的容量。這樣做也許會減小不斷增加的需要重新配置的數量。1. 構建和運行使用 ArrayList 的應用程序 2. 構建和運行另一個使用 ArrayList 的應用程序3. 構建和運行使用 LinkedList 的應用程序 (2.1)構建和運行使用 ArrayList 的應用程序0. 如果尚未啟動 NetBeans IDE,請啟動它。1. 創建一個新 NetBeans 項目。 選擇 文件-新建項目(Ctrl+Shift+N)。此時將出現 新建項目 對話框。 在 選擇項目 窗格中,選擇 類別 列表中的 Java,并選擇 項目 列表中的 Java 應用程序。單擊 下一步 按鈕。 在 名稱和位置 窗格下,項目名稱 處輸入 List-ArrayList 作為項目名。 在 創建主類 處,選擇由 IDE 提供的缺省值。(如圖 2.11 所示) 單擊 完成 按鈕。 注意到出現了 List-ArrayList 項目,IDE 生成的 Main.java 顯示于 NetBeans IDE 的源編輯器窗口。 2. 將 IDE 生成的 Main.java 文件修改為代碼 2.12 所示的內容。package listarraylist;import java.util.ArrayList;import java.util.ListIterator;public class Main public static void main(String args) / Create ArrayList object with capacity of 2 elements ArrayList al = new ArrayList(2); System.out.println(al+, size = +al.size(); / Add items to the ArrayList al.add(R); al.add(U); al.add(O); al.add(new String(x); al.add(2, new Integer(10); System.out.println(al+, size = + al.size(); / Remove item al.remove(U); System.out.println(al+, size = + al.size(); / Check if the list contains the specified element Boolean b = al.contains(x); System.out.println(The list contains x = + b); b = al.contains(p); System.out.println(The list contains p = + b); b = al.contains(new Integer(10); System.out.println(The list contains Integer of 10 = + b); / Create ListIterator and iterate entries in it ListIterator li = al.listIterator(); while (li.hasNext() System.out.println(From ListIterator = + li.next(); / Create Object array from ArrayList Object a = al.toArray(); for (int i=0; ia.length; i+) System.out.println(From an Array = + ai); 代碼 2.12:經過修改的 LinkedListDemo.java 文件3. 生成和運行項目 右鍵單擊 List-ArrayList 項目并選擇 運行。 在 輸出 窗口中查看結果。(如圖 2.13 所示) , size = 0R, U, 10, O, x, size = 5R, 10, O, x, size = 4The list contains x = trueThe list contains p = falseThe list contains Integer of 10 = trueFrom ListIterator = RFrom ListIterator = 10From ListIterator = OFrom ListIterator = xFrom an Array = RFrom an Array = 10From an Array = OFrom an Array = x圖 2.13:運行 List-ArrayList 應用程序的結果4. 作為練習,請完成以下任務 創建您自己的 NetBeans 項目,將其命名為 MyOwnArrayList。 創建您自己的 ArrayList 對象,初始容量設為 5。 將以下對象添加到新創建的 ArrayList 對象中。 o 2 個 String 對象o 1 個 MyOwnClass 對象(首先需要創建 MyOwnClass.java)o 3 個 Integer 對象 通過 ArrayList 對象創建 Iterator 對象,并通過迭代顯示它們。 通過 ArrayList 對象創建 Object 數組,并在一個 for 循環中顯示它們。 解決方案:此練習作為可運行的 NetBeans 項目包含在動手實驗室的壓縮文件中。項目文件位于 /javacollections/samples/List-ArrayList。您可以打開并運行它。返回練習頂部(2.2)構建另一個使用 ArrayList 的 Java 應用程序1. 創建一個新 NetBeans 項目 選擇 文件-新建項目(Ctrl+Shift+N)。此時將出現 新建項目 對話框。 在 選擇項目 窗格中,選擇 類別 列表中的 Java,并選擇 項目 列表中的 Java 應用程序。單擊 下一步 按鈕。 在 名稱和位置 窗格中的 項目名稱 字段中輸入 List-ArrayList-Deal 作為項目名。 在 創建主類 字段中輸入 listarraylistdeal.Deal。 單擊 完成 按鈕。 注意到出現了 List-ArrayList-Deal 項目,生成 Deal.java 的 IDE 顯示于 NetBeans IDE 的源編輯器窗口中。 2. 根據以下代碼 2.20 修改 IDE 生成的 Deal.java。仔細閱讀以下代碼。package listarraylistdeal;import java.util.*;class Deal public static void main(String args) int numHands = Integer.parseInt(args0); int cardsPerHand = Integer.parseInt(args1); / Make a normal 52-card deck String suit = new String spades, hearts, diamonds, clubs; String rank = new String ace,2,3,4,5,6,7,8,9,10,jack,queen,king; List deck = new ArrayList(); for (int i=0; isuit.length; i+) for (int j=0; jrank.length; j+) deck.add(rankj + of + suiti); Collections.shuffle(deck); for (int i=0; inumHands; i+) System.out.println(dealHand(deck, cardsPerHand); public static List dealHand(List deck, int n) int deckSize = deck.size(); List handView = deck.subList(deckSize-n, deckSize); List hand = new ArrayList(handView); handView.clear(); return hand; 代碼 2.20:經過修改的 Deal.java 文件3. 生成和運行項目 右鍵單擊 List-ArrayList-Deal 項目
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業培訓計劃合同
- 2025葡萄酒銷售合同范本
- 2025建筑施工承包合同模板
- 2025瑞豐企業合同(項目管理咨詢)
- 2025醫療器械專業技術轉讓合同
- 《手型彩繪 》教案
- 2025精致合約-設備安裝工程合同
- 2025年度基礎設施建設工程施工合同模板
- 2025辦公樓租賃合同書模板
- 《市場營銷策略與應用》課件
- 分層總和法沉降計算表格
- 英語-外研(一年級起點)-四年級下冊-學生單詞默寫專用表格
- 醫療機構消毒技術規范(2023年版)
- 完整版各城基本風壓
- GB/T 6672-2001塑料薄膜和薄片厚度測定機械測量法
- GB/T 4937.4-2012半導體器件機械和氣候試驗方法第4部分:強加速穩態濕熱試驗(HAST)
- 三角形的內角和-課件
- CO變換工藝發展過程及趨勢
- 北師大版數學六年級下冊-總復習課件(精編版)
- 經濟效益證明(模板)
- 汽車總裝車輛返工返修作業標準管理辦法
評論
0/150
提交評論