摘要:中的集合稱為單列集合,中的集合稱為雙列集合。洗牌通過數(shù)字完成洗牌發(fā)牌發(fā)牌將每個人以及底牌設計為將最后張牌直接存放于底牌,剩余牌通過對取模依次發(fā)牌。存放的過程中要求數(shù)字大小與斗地主規(guī)則的大小對應。
01Map集合概述
A:Map集合概述:
我們通過查看Map接口描述,發(fā)現(xiàn)Map接口下的集合與Collection接口下的集合,它們存儲數(shù)據(jù)的形式不同 ? a:Collection中的集合,元素是孤立存在的(理解為單身),向集合中存儲元素采用一個個元素的方式存儲。 ? b:Map中的集合,元素是成對存在的(理解為夫妻)。每個元素由鍵與值兩部分組成,通過鍵可以找對所對應的值。 ? Collection中的集合稱為單列集合,Map中的集合稱為雙列集合。 ? 需要注意的是,Map中的集合不能包含重復的鍵,值可以重復;每個鍵只能對應一個值。 Map |--HashMap |--LinkedHashMap02Map接口中的常用方法
A:Map接口中的常用方法
/* * Map接口中的常用方法 * 使用Map接口的實現(xiàn)類 HashMap */ public class MapDemo { public static void main(String[] args) { function_2(); } /* * 移除集合中的鍵值對,返回被移除之前的值 * V remove(K) */ public static void function_2(){ Map03Map集合遍歷方式keySet方法map = new HashMap (); map.put(1, "a"); map.put(2, "b"); map.put(3, "c"); System.out.println(map); String value = map.remove(33); System.out.println(value); System.out.println(map); } /* * 通過鍵對象,獲取值對象 * V get(K) * 如果集合中沒有這個鍵,返回null */ public static void function_1(){ //創(chuàng)建集合對象,作為鍵的對象整數(shù),值的對象存儲字符串 Map map = new HashMap (); map.put(1, "a"); map.put(2, "b"); map.put(3, "c"); System.out.println(map); String value = map.get(4); System.out.println(value); } /* * 將鍵值對存儲到集合中 * V put(K,V) K 作為鍵的對象, V作為值的對象 * 存儲的是重復的鍵,將原有的值,覆蓋 * 返回值一般情況下返回null, * 存儲重復鍵的時候,返回被覆蓋之前的值 */ public static void function(){ //創(chuàng)建集合對象,HashMap,存儲對象,鍵是字符串,值是整數(shù) Map map = new HashMap (); map.put("a", 1); map.put("b", 2); map.put("c", 3); System.out.println(map); } }
A:Map集合遍歷方式keySet方法
1.獲取Map集合中所有的鍵,由于鍵是唯一的,所以返回一個Set集合存儲所有的鍵 2.遍歷鍵的Set集合,得到每一個鍵 3.根據(jù)鍵利用get(key)去Map找所對應的值 /* * Map集合的遍歷 * 利用鍵獲取值 * Map接口中定義方法keySet * 所有的鍵,存儲到Set集合 */ public class MapDemo1 { public static void main(String[] args) { /* * 1. 調(diào)用map集合的方法keySet,所有的鍵存儲到Set集合中 * 2. 遍歷Set集合,獲取出Set集合中的所有元素 (Map中的鍵) * 3. 調(diào)用map集合方法get,通過鍵獲取到值 */ Map04Map集合Entry對象map = new HashMap (); map.put("a", 11); map.put("b", 12); map.put("c", 13); map.put("d", 14); //1. 調(diào)用map集合的方法keySet,所有的鍵存儲到Set集合中 Set set = map.keySet(); //2. 遍歷Set集合,獲取出Set集合中的所有元素 (Map中的鍵) Iterator it = set.iterator(); while(it.hasNext()){ //it.next返回是Set集合元素,也就是Map中的鍵 //3. 調(diào)用map集合方法get,通過鍵獲取到值 String key = it.next(); Integer value = map.get(key); System.out.println(key+"...."+value); } System.out.println("======================="); for(String key : map.keySet()){ Integer value = map.get(key); System.out.println(key+"...."+value); } } }
A:Map集合Entry對象
interface Map{ interface Entry{//Entry是Map的一個內(nèi)部接口 //由Map的子類的內(nèi)部類實現(xiàn) } } class HashMap{ static class Entry05Map集合遍歷方式entrySet方法implements Map.Entry {//Entry對象指的就是該類的對象 final K key; V value; } } 在Map類設計時,提供了一個嵌套接口:Entry。 Entry將鍵值對的對應關系封裝成了對象。 即鍵值對對象,這樣我們在遍歷Map集合時,就可以從每一個鍵值對(Entry)對象中獲取對應的鍵與對應的值。 a:Entry是Map接口中提供的一個靜態(tài)內(nèi)部嵌套接口。 b:相關方法 ? getKey()方法:獲取Entry對象中的鍵 ? getValue()方法:獲取Entry對象中的值 ? entrySet()方法:用于返回Map集合中所有的鍵值對(Entry)對象,以Set集合形式返回。
A:Map集合遍歷方式entrySet方法
* * Map集合獲取方式 * entrySet方法,鍵值對映射關系(結婚證)獲取 * 實現(xiàn)步驟: * 1. 調(diào)用map集合方法entrySet()將集合中的映射關系對象,存儲到Set集合 * Set> * 2. 迭代Set集合 * 3. 獲取出的Set集合的元素,是映射關系對象 * 4. 通過映射關系對象方法 getKet, getValue獲取鍵值對 * * 創(chuàng)建內(nèi)部類對象 外部類.內(nèi)部類 = new */ public class MapDemo2 { public static void main(String[] args) { Map map = new HashMap (); map.put(1, "abc"); map.put(2, "bcd"); map.put(3, "cde"); //1. 調(diào)用map集合方法entrySet()將集合中的映射關系對象,存儲到Set集合 Set > set = map.entrySet(); //2. 迭代Set集合 Iterator > it = set.iterator(); while(it.hasNext()){ // 3. 獲取出的Set集合的元素,是映射關系對象 // it.next 獲取的是什么對象,也是Map.Entry對象 Map.Entry entry = it.next(); //4. 通過映射關系對象方法 getKet, getValue獲取鍵值對 Integer key = entry.getKey(); String value = entry.getValue(); System.out.println(key+"...."+value); } } }
=======================第二節(jié)課開始============================================
06Map集合遍歷方式增強for循環(huán)A:Map集合遍歷方式增強for循環(huán)
A:Map集合遍歷方式entrySet方法 * * Map集合獲取方式 * entrySet方法,鍵值對映射關系(結婚證)獲取 * 實現(xiàn)步驟: * 1. 調(diào)用map集合方法entrySet()將集合中的映射關系對象,存儲到Set集合 * Set07HashMap集合存儲和遍歷> * 2. 迭代Set集合 * 3. 獲取出的Set集合的元素,是映射關系對象 * 4. 通過映射關系對象方法 getKet, getValue獲取鍵值對 * * 創(chuàng)建內(nèi)部類對象 外部類.內(nèi)部類 = new */ public class MapDemo2 { public static void main(String[] args) { Map map = new HashMap (); map.put(1, "abc"); map.put(2, "bcd"); map.put(3, "cde"); //1. 調(diào)用map集合方法entrySet()將集合中的映射關系對象,存儲到Set集合 Set > set = map.entrySet(); //2. 迭代Set集合 Iterator > it = set.iterator(); while(it.hasNext()){ // 3. 獲取出的Set集合的元素,是映射關系對象 // it.next 獲取的是什么對象,也是Map.Entry對象 Map.Entry entry = it.next(); //4. 通過映射關系對象方法 getKet, getValue獲取鍵值對 Integer key = entry.getKey(); String value = entry.getValue(); System.out.println(key+"...."+value); } System.out.println("========================="); for(Map.Entry entry : map.entrySet()){ System.out.println(entry.getKey()+"..."+entry.getValue()); } } } 注意:Map集合不能直接使用迭代器或者foreach進行遍歷。但是轉成Set之后就可以使用了。
A:HashMap集合存儲和遍歷
/* * 使用HashMap集合,存儲自定義的對象 * 自定義對象,作為鍵,出現(xiàn),作為值出現(xiàn) */ public class HashMapDemo { public static void main(String[] args) { function_1(); } /* * HashMap 存儲自定義對象Person,作為鍵出現(xiàn) * 鍵的對象,是Person類型,值是字符串 * 保證鍵的唯一性,存儲到鍵的對象,重寫hashCode equals */ public static void function_1(){ HashMap08LinkedHashMap的特點map = new HashMap (); map.put(new Person("a",20), "里約熱內(nèi)盧"); map.put(new Person("b",18), "索馬里"); map.put(new Person("b",18), "索馬里"); map.put(new Person("c",19), "百慕大"); for(Person key : map.keySet()){ String value = map.get(key); System.out.println(key+"..."+value); } System.out.println("==================="); for(Map.Entry entry : map.entrySet()){ System.out.println(entry.getKey()+"..."+entry.getValue()); } } /* * HashMap 存儲自定義的對象Person,作為值出現(xiàn) * 鍵的對象,是字符串,可以保證唯一性 */ public static void function(){ HashMap map = new HashMap (); map.put("beijing", new Person("a",20)); map.put("tianjin", new Person("b",18)); map.put("shanghai", new Person("c",19)); for(String key : map.keySet()){ Person value = map.get(key); System.out.println(key+"..."+value); } System.out.println("================="); for(Map.Entry entry : map.entrySet()){ String key = entry.getKey(); Person value = entry.getValue(); System.out.println(key+"..."+value); } } }
*A:LinkedHashMap的特點
/* * LinkedHashMap繼承HashMap * 保證迭代的順序 */ public class LinkedHashMapDemo { public static void main(String[] args) { LinkedHashMap09Hashtable的特點link = new LinkedHashMap (); link.put("1", "a"); link.put("13", "a"); link.put("15", "a"); link.put("17", "a"); System.out.println(link); } }
*A:Hashtable的特點
/* * Map接口實現(xiàn)類 Hashtable * 底層數(shù)據(jù)結果哈希表,特點和HashMap是一樣的 * Hashtable 線程安全集合,運行速度慢 * HashMap 線程不安全的集合,運行速度快 * * Hashtable命運和Vector是一樣的,從JDK1.2開始,被更先進的HashMap取代 * * HashMap 允許存儲null值,null鍵 * Hashtable 不允許存儲null值,null鍵 * * Hashtable他的孩子,子類 Properties 依然活躍在開發(fā)舞臺 */ public class HashtableDemo { public static void main(String[] args) { Map10靜態(tài)導入map = new Hashtable (); map.put(null, null); System.out.println(map); } }
*A:靜態(tài)導入:如果本類中有和靜態(tài)導入的同名方法會優(yōu)先使用本類的
如果還想使用靜態(tài)導入的,依然需要類名來調(diào)用 /* * JDK1.5新特性,靜態(tài)導入 * 減少開發(fā)的代碼量 * 標準的寫法,導入包的時候才能使用 * * import static java.lang.System.out;最末尾,必須是一個靜態(tài)成員 */ import static java.lang.System.out; import static java.util.Arrays.sort;
public class StaticImportDemo { public static void main(String[] args) { out.println("hello"); int[] arr = {1,4,2}; sort(arr); } }11方法的可變參數(shù)
*A:方法的可變參數(shù)
/* * JDK1.5新的特性,方法的可變參數(shù) * 前提: 方法參數(shù)數(shù)據(jù)類型確定,參數(shù)的個數(shù)任意 * 可變參數(shù)語法: 數(shù)據(jù)類型...變量名 * 可變參數(shù),本質(zhì)就是一個數(shù)組 */ public class VarArgumentsDemo { public static void main(String[] args) { //調(diào)用一個帶有可變參數(shù)的方法,傳遞參數(shù),可以任意 // getSum(); int sum = getSum(5,34,3,56,7,8,0); System.out.println(sum); } /* * 定義方法,計算10個整數(shù)和 * 方法的可變參數(shù)實現(xiàn) */ public static int getSum(int...a){ int sum = 0 ; for(int i : a){ sum = sum + i; } return sum; } /* * 定義方法,計算3個整數(shù)和 */ /*public static int getSum(int a,int b ,int c){ return a+b+c; }*/ /* * 定義方法,計算2個整數(shù)和 */ /*public static int getSum(int a,int b){ return a+b; }*/ }12可變參數(shù)的注意事項
*A:可變參數(shù)的注意事項
/* * 可變參數(shù)的注意事項 * 1. 一個方法中,可變參數(shù)只能有一個 * 2. 可變參數(shù),必須寫在參數(shù)列表的最后一位 */ public static void function(Object...o){ }
=======================第三節(jié)課開始=============================================
13Collections工具類A:Collections工具類
/* * 集合操作的工具類 * Collections */ public class CollectionsDemo { public static void main(String[] args) { function_2(); } /* * Collections.shuffle方法 * 對List集合中的元素,進行隨機排列 */ public static void function_2(){ List14集合的嵌套list = new ArrayList (); list.add(1); list.add(5); list.add(9); list.add(11); list.add(8); list.add(10); list.add(15); list.add(20); System.out.println(list); //調(diào)用工具類方法shuffle對集合隨機排列 Collections.shuffle(list); System.out.println(list); } /* * Collections.binarySearch靜態(tài)方法 * 對List集合進行二分搜索,方法參數(shù),傳遞List集合,傳遞被查找的元素 */ public static void function_1(){ List list = new ArrayList (); list.add(1); list.add(5); list.add(8); list.add(10); list.add(15); list.add(20); //調(diào)用工具類靜態(tài)方法binarySearch int index = Collections.binarySearch(list, 16); System.out.println(index); } /* * Collections.sort靜態(tài)方法 * 對于List集合,進行升序排列 */ public static void function(){ //創(chuàng)建List集合 List list = new ArrayList (); list.add("ewrew"); list.add("qwesd"); list.add("Qwesd"); list.add("bv"); list.add("wer"); System.out.println(list); //調(diào)用集合工具類的方法sort Collections.sort(list); System.out.println(list); } }
A:集合的嵌套
/* * Map集合的嵌套,Map中存儲的還是Map集合 * 要求: * 傳智播客 * Java基礎班 * 001 張三 * 002 李四 * * Java就業(yè)班 * 001 王五 * 002 趙六 * 對以上數(shù)據(jù)進行對象的存儲 * 001 張三 鍵值對 * Java基礎班: 存儲學號和姓名的鍵值對 * Java就業(yè)班: * 傳智播客: 存儲的是班級 * * 基礎班Map <學號,姓名> * 傳智播客Map <班級名字, 基礎班Map> */ public class MapMapDemo { public static void main(String[] args) { //定義基礎班集合 HashMap15集合的嵌套keySet遍歷javase = new HashMap (); //定義就業(yè)班集合 HashMap javaee = new HashMap (); //向班級集合中,存儲學生信息 javase.put("001", "張三"); javase.put("002", "李四"); javaee.put("001", "王五"); javaee.put("002", "趙六"); //定義傳智播客集合容器,鍵是班級名字,值是兩個班級容器 HashMap > czbk = new HashMap >(); czbk.put("基礎班", javase); czbk.put("就業(yè)班", javaee); keySet(czbk); }
A:集合的嵌套keySet遍歷
/* * Map集合的嵌套,Map中存儲的還是Map集合 * 要求: * 傳智播客 * Java基礎班 * 001 張三 * 002 李四 * * Java就業(yè)班 * 001 王五 * 002 趙六 * 對以上數(shù)據(jù)進行對象的存儲 * 001 張三 鍵值對 * Java基礎班: 存儲學號和姓名的鍵值對 * Java就業(yè)班: * 傳智播客: 存儲的是班級 * * 基礎班Map <學號,姓名> * 傳智播客Map <班級名字, 基礎班Map> */ public class MapMapDemo { public static void main(String[] args) { //定義基礎班集合 HashMap16集合的嵌套entrySet遍歷javase = new HashMap (); //定義就業(yè)班集合 HashMap javaee = new HashMap (); //向班級集合中,存儲學生信息 javase.put("001", "張三"); javase.put("002", "李四"); javaee.put("001", "王五"); javaee.put("002", "趙六"); //定義傳智播客集合容器,鍵是班級名字,值是兩個班級容器 HashMap > czbk = new HashMap >(); czbk.put("基礎班", javase); czbk.put("就業(yè)班", javaee); keySet(czbk); } public static void keySet(HashMap > czbk){ //調(diào)用czbk集合方法keySet將鍵存儲到Set集合 Set classNameSet = czbk.keySet(); //迭代Set集合 Iterator classNameIt = classNameSet.iterator(); while(classNameIt.hasNext()){ //classNameIt.next獲取出來的是Set集合元素,czbk集合的鍵 String classNameKey = classNameIt.next(); //czbk集合的方法get獲取值,值是一個HashMap集合 HashMap classMap = czbk.get(classNameKey); //調(diào)用classMap集合方法keySet,鍵存儲到Set集合 Set studentNum = classMap.keySet(); Iterator studentIt = studentNum.iterator(); while(studentIt.hasNext()){ //studentIt.next獲取出來的是classMap的鍵,學號 String numKey = studentIt.next(); //調(diào)用classMap集合中的get方法獲取值 String nameValue = classMap.get(numKey); System.out.println(classNameKey+".."+numKey+".."+nameValue); } } System.out.println("=================================="); for(String className: czbk.keySet()){ HashMap hashMap = czbk.get(className); for(String numKey : hashMap.keySet()){ String nameValue = hashMap.get(numKey); System.out.println(className+".."+numKey+".."+nameValue); } } } }
A:集合的嵌套entrySet遍歷 /* * Map集合的嵌套,Map中存儲的還是Map集合 * 要求: * 傳智播客 * Java基礎班 * 001 張三 * 002 李四 * * Java就業(yè)班 * 001 王五 * 002 趙六 * 對以上數(shù)據(jù)進行對象的存儲 * 001 張三 鍵值對 * Java基礎班: 存儲學號和姓名的鍵值對 * Java就業(yè)班: * 傳智播客: 存儲的是班級 * * 基礎班Map <學號,姓名> * 傳智播客Map <班級名字, 基礎班Map> */ public class MapMapDemo { public static void main(String[] args) { //定義基礎班集合 HashMapjavase = new HashMap (); //定義就業(yè)班集合 HashMap javaee = new HashMap (); //向班級集合中,存儲學生信息 javase.put("001", "張三"); javase.put("002", "李四"); javaee.put("001", "王五"); javaee.put("002", "趙六"); //定義傳智播客集合容器,鍵是班級名字,值是兩個班級容器 HashMap > czbk = new HashMap >(); czbk.put("基礎班", javase); czbk.put("就業(yè)班", javaee); entrySet(czbk); } public static void entrySet(HashMap > czbk){ //調(diào)用czbk集合方法entrySet方法,將czbk集合的鍵值對關系對象,存儲到Set集合 Set >> classNameSet = czbk.entrySet(); //迭代器迭代Set集合 Iterator >> classNameIt = classNameSet.iterator(); while(classNameIt.hasNext()){ //classNameIt.next方法,取出的是czbk集合的鍵值對關系對象 Map.Entry > classNameEntry = classNameIt.next(); //classNameEntry方法 getKey,getValue String classNameKey = classNameEntry.getKey(); //獲取值,值是一個Map集合 HashMap classMap = classNameEntry.getValue(); //調(diào)用班級集合classMap方法entrySet,鍵值對關系對象存儲Set集合 Set > studentSet = classMap.entrySet(); //迭代Set集合 Iterator > studentIt = studentSet.iterator(); while(studentIt.hasNext()){ //studentIt方法next獲取出的是班級集合的鍵值對關系對象 Map.Entry studentEntry = studentIt.next(); //studentEntry方法 getKey getValue String numKey = studentEntry.getKey(); String nameValue = studentEntry.getValue(); System.out.println(classNameKey+".."+numKey+".."+nameValue); } } System.out.println("=================================="); for (Map.Entry > me : czbk.entrySet()) { String classNameKey = me.getKey(); HashMap numNameMapValue = me.getValue(); for (Map.Entry nameMapEntry : numNameMapValue.entrySet()) { String numKey = nameMapEntry.getKey(); String nameValue = nameMapEntry.getValue(); System.out.println(classNameKey + ".." + numKey + ".." + nameValue); } } } }
=======================第四節(jié)課開始=============================================
17斗地主的功能分析A:斗地主的功能分析
a:具體規(guī)則: 1. 組裝54張撲克牌 2. 將54張牌順序打亂 3. 三個玩家參與游戲,三人交替摸牌,每人17張牌,最后三張留作底牌。 4. 查看三人各自手中的牌(按照牌的大小排序)、底牌 b:分析: 1.準備牌: 完成數(shù)字與紙牌的映射關系: 使用雙列Map(HashMap)集合,完成一個數(shù)字與字符串紙牌的對應關系(相當于一個字典)。 2.洗牌: 通過數(shù)字完成洗牌發(fā)牌 3.發(fā)牌: 將每個人以及底牌設計為ArrayList18斗地主的準備牌,將最后3張牌直接存放于底牌,剩余牌通過對3取模依次發(fā)牌。 存放的過程中要求數(shù)字大小與斗地主規(guī)則的大小對應。 將代表不同紙牌的數(shù)字分配給不同的玩家與底牌。 4.看牌: 通過Map集合找到對應字符展示。 通過查詢紙牌與數(shù)字的對應關系,由數(shù)字轉成紙牌字符串再進行展示。
A:斗地主的準備牌
/* * 實現(xiàn)模擬斗地主的功能 * 1. 組合牌 * 2. 洗牌 * 3. 發(fā)牌 * 4. 看牌 */ public class DouDiZhu { public static void main(String[] args) { //1. 組合牌 //創(chuàng)建Map集合,鍵是編號,值是牌 HashMap19斗地主的洗牌pooker = new HashMap (); //創(chuàng)建List集合,存儲編號 ArrayList pookerNumber = new ArrayList (); //定義出13個點數(shù)的數(shù)組 String[] numbers = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"}; //定義4個花色數(shù)組 String[] colors = {"?","?","?","?"}; //定義整數(shù)變量,作為鍵出現(xiàn) int index = 2; //遍歷數(shù)組,花色+點數(shù)的組合,存儲到Map集合 for(String number : numbers){ for(String color : colors){ pooker.put(index, color+number); pookerNumber.add(index); index++; } } //存儲大王,和小王,索引是從0~54,對應大王,小王,...3(牌的順序從大到小) pooker.put(0, "大王"); pookerNumber.add(0); pooker.put(1, "小王"); pookerNumber.add(1); }
A:斗地主的洗牌 /* * 實現(xiàn)模擬斗地主的功能 * 1. 組合牌 * 2. 洗牌 * 3. 發(fā)牌 * 4. 看牌 */ public class DouDiZhu { public static void main(String[] args) { //1. 組合牌 //創(chuàng)建Map集合,鍵是編號,值是牌 HashMap20斗地主的發(fā)牌pooker = new HashMap (); //創(chuàng)建List集合,存儲編號 ArrayList pookerNumber = new ArrayList (); //定義出13個點數(shù)的數(shù)組 String[] numbers = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"}; //定義4個花色數(shù)組 String[] colors = {"?","?","?","?"}; //定義整數(shù)變量,作為鍵出現(xiàn) int index = 2; //遍歷數(shù)組,花色+點數(shù)的組合,存儲到Map集合 for(String number : numbers){ for(String color : colors){ pooker.put(index, color+number); pookerNumber.add(index); index++; } } //存儲大王,和小王 pooker.put(0, "大王"); pookerNumber.add(0); pooker.put(1, "小王"); pookerNumber.add(1); //洗牌,將牌的編號打亂 Collections.shuffle(pookerNumber); } }
A:斗地主的發(fā)牌
/* * 實現(xiàn)模擬斗地主的功能 * 1. 組合牌 * 2. 洗牌 * 3. 發(fā)牌 * 4. 看牌 */ public class DouDiZhu { public static void main(String[] args) { //1. 組合牌 //創(chuàng)建Map集合,鍵是編號,值是牌 HashMap21斗地主的看牌pooker = new HashMap (); //創(chuàng)建List集合,存儲編號 ArrayList pookerNumber = new ArrayList (); //定義出13個點數(shù)的數(shù)組 String[] numbers = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"}; //定義4個花色數(shù)組 String[] colors = {"?","?","?","?"}; //定義整數(shù)變量,作為鍵出現(xiàn) int index = 2; //遍歷數(shù)組,花色+點數(shù)的組合,存儲到Map集合 for(String number : numbers){ for(String color : colors){ pooker.put(index, color+number); pookerNumber.add(index); index++; } } //存儲大王,和小王 pooker.put(0, "大王"); pookerNumber.add(0); pooker.put(1, "小王"); pookerNumber.add(1); //洗牌,將牌的編號打亂 Collections.shuffle(pookerNumber); //發(fā)牌功能,將牌編號,發(fā)給玩家集合,底牌集合 ArrayList player1 = new ArrayList (); ArrayList player2 = new ArrayList (); ArrayList player3 = new ArrayList (); ArrayList bottom = new ArrayList (); //發(fā)牌采用的是集合索引%3 for(int i = 0 ; i < pookerNumber.size() ; i++){ //先將底牌做好 if(i < 3){ //存到底牌去 bottom.add( pookerNumber.get(i)); //對索引%3判斷 }else if(i % 3 == 0){ //索引上的編號,發(fā)給玩家1 player1.add( pookerNumber.get(i) ); }else if( i % 3 == 1){ //索引上的編號,發(fā)給玩家2 player2.add( pookerNumber.get(i) ); }else if( i % 3 == 2){ //索引上的編號,發(fā)給玩家3 player3.add( pookerNumber.get(i) ); } } } }
A:斗地主的看牌
/* * 實現(xiàn)模擬斗地主的功能 * 1. 組合牌 * 2. 洗牌 * 3. 發(fā)牌 * 4. 看牌 */ public class DouDiZhu { public static void main(String[] args) { //1. 組合牌 //創(chuàng)建Map集合,鍵是編號,值是牌 HashMappooker = new HashMap (); //創(chuàng)建List集合,存儲編號 ArrayList pookerNumber = new ArrayList (); //定義出13個點數(shù)的數(shù)組 String[] numbers = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"}; //定義4個花色數(shù)組 String[] colors = {"?","?","?","?"}; //定義整數(shù)變量,作為鍵出現(xiàn) int index = 2; //遍歷數(shù)組,花色+點數(shù)的組合,存儲到Map集合 for(String number : numbers){ for(String color : colors){ pooker.put(index, color+number); pookerNumber.add(index); index++; } } //存儲大王,和小王 pooker.put(0, "大王"); pookerNumber.add(0); pooker.put(1, "小王"); pookerNumber.add(1); //洗牌,將牌的編號打亂 Collections.shuffle(pookerNumber); //發(fā)牌功能,將牌編號,發(fā)給玩家集合,底牌集合 ArrayList player1 = new ArrayList (); ArrayList player2 = new ArrayList (); ArrayList player3 = new ArrayList (); ArrayList bottom = new ArrayList (); //發(fā)牌采用的是集合索引%3 for(int i = 0 ; i < pookerNumber.size() ; i++){ //先將底牌做好 if(i < 3){ //存到底牌去 bottom.add( pookerNumber.get(i)); //對索引%3判斷 }else if(i % 3 == 0){ //索引上的編號,發(fā)給玩家1 player1.add( pookerNumber.get(i) ); }else if( i % 3 == 1){ //索引上的編號,發(fā)給玩家2 player2.add( pookerNumber.get(i) ); }else if( i % 3 == 2){ //索引上的編號,發(fā)給玩家3 player3.add( pookerNumber.get(i) ); } } //對玩家手中的編號排序 Collections.sort(player1); Collections.sort(player2); Collections.sort(player3); //看牌,將玩家手中的編號,到Map集合中查找,根據(jù)鍵找值 //定義方法實現(xiàn) look("劉德華",player1,pooker); look("張曼玉",player2,pooker); look("林青霞",player3,pooker); look("底牌",bottom,pooker); } public static void look(String name,ArrayList player,HashMap pooker){ //遍歷ArrayList集合,獲取元素,作為鍵,到集合Map中找值 System.out.print(name+" "); for(Integer key : player){ String value = pooker.get(key); System.out.print(value+" "); } System.out.println(); } }
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67164.html
摘要:使用默認隨機源對指定列表進行置換。將集合排序使用二分搜索法搜索指定列表,以獲得指定對象根據(jù)元素的自然順序,返回給定的最大元素。 1_Map集合概述和特點 A:Map接口概述 查看API可以知道: 將鍵映射到值的對象 一個映射不能包含重復的鍵 每個鍵最多只能映射到一個值 B:Map接口和Collection接口的不同 Map是雙列的,Collection是單列的 Map...
摘要:斗地主牌堆,張牌,四種花色,,大小王洗牌發(fā)牌黑桃方片梅花紅桃大王小王洗牌發(fā)牌展示玩家玩家玩家底牌 斗地主 1.牌堆,54張牌,四種花色,2,3,4,5,6,7,8,9,10,J,Q,K,A,大小王 2.洗牌 3.發(fā)牌 import random class Poke(): flowr=[黑桃,方片,梅花,紅桃] num=[2,3,4,...
摘要:第三階段常見對象的學習集合框架集合在實際需求中,我們常常會遇到這樣的問題,在諸多的數(shù)據(jù)中,通過其編號來尋找某一些信息,從而進行查看或者修改,例如通過學號查詢學生信息。面試題和的區(qū)別是單列集合的頂層接口,有子接口和。 第三階段 JAVA常見對象的學習 集合框架——Map集合 showImg(https://segmentfault.com/img/remote/1460000019683...
摘要:系統(tǒng)結構系統(tǒng)考慮使用和實現(xiàn)服務器端邏輯,前端使用。邏輯流程主要邏輯包括用戶進入游戲等待對家進入游戲游戲過程結束統(tǒng)計這個過程。 1. 系統(tǒng)結構 系統(tǒng)考慮使用Nodejs和SocketIo實現(xiàn)服務器端邏輯,前端使用HTML5。showImg(https://segmentfault.com/img/remote/1460000007643089); 2. 邏輯流程 1 . 主要邏輯包括用戶...
閱讀 4744·2021-10-13 09:39
閱讀 1956·2019-08-29 11:12
閱讀 1150·2019-08-28 18:16
閱讀 1863·2019-08-26 12:16
閱讀 1249·2019-08-26 12:13
閱讀 2996·2019-08-26 10:59
閱讀 2302·2019-08-23 18:27
閱讀 2996·2019-08-23 18:02