Java小遊戲之鬥地主遊戲例項Map集合

2021-08-13 22:31:55 字數 2994 閱讀 9495

1、map物件是乙個雙列的容器

2、兩列分別對應key和value,二者一一對應,是對映關係

3、map中的資料以鍵值對的形式儲存

4、鍵值是唯一的,不能重複的

hashset()底層是hashmap(),hashset()是依賴hashmap()的

hashset()為什麼要在底層實現hashmap()?

因為二者都是用相同的雜湊演算法,只需要寫乙個,體現了物件導向的封裝思想

hashmap()去重和treemap()排序操作都是針對鍵值的

1、hashmap是對hashtable的優化

2、hashmap是執行緒不安全的,hashtable是執行緒安全的

3、hashmap是jdk1.2出現的,hashtable是jdk1.0出現的

4、hashmap中的key和value是可以為null的,但是hashtable中不可以出現null

1、首先map介面的新增方法是put()

2、put()方法的返回值是被覆蓋的那個值

3、remove方法的返回值是被刪除的那個值

4、有一些特殊的方法

keyset(),返回的是鍵值為元素的集合

entryset(),返回的是以鍵值對為元素的集合

containskey(),判斷是否包含某個鍵值

containsvalue(),判斷是否包含某個鍵值對應值

get(key),獲取鍵值對應值

1、利用keysset()方法,獲取集合,然後使用foreach遍歷

2、利用keyset()方法獲取集合,然後使用迭代器遍歷

3、利用entryset(),獲取鍵值對的集合,然後使用foreach遍歷,其中使用getkey()和getvalue()方法

1、使用foreach**示例

public static void fun2() 

}

2.、使用迭代器遍歷**示例

public static void fun1() 

}

3、使用entryset方法**示例

public static void fun4() 

}

分析:最後使用了entryset()的方法,直接使用getvalue()的方法輸出

**示例:

//初始化兩個容器,儲存學生資訊

hashmaphashmap2 = new hashmap<>();

hashmap2.put("wangning",18);

hashmap2.put("wang",19);

hashmaphashmap3 = new hashmap<>();

hashmap3.put("wn", 20);

hashmap3.put("ning",21);

//第三個容器儲存前面兩個容器的資訊

hashmap> hashmap = new hashmap();

hashmap.put("一班", hashmap2);

hashmap.put("二班",hashmap3);

//使用entryset的方式getvalue的方式直接輸出內部的hashmap

for(entry> entry : hashmap.entryset())

}

分析:1、需要有乙個map型別容器,key值存放integer,value存放撲克牌,已經兩個字串陣列

2、給map容器中傳入所有的撲克牌,並且將key值在迴圈中一次傳給乙個陣列

3、將存放key值得陣列打亂順序,之後分別定義四個treeset,前三個用於存放玩家的撲克牌,最後乙個存放底牌

4、最後按照順序將撲克牌列印出來

思考:之所用treeset集合來接收key值,是因為key值對應撲克牌,並且撲克牌是按照遞增的順序傳入map的,使用treeset集合將key排序後,就會得到按照順序排列的撲克牌,即便撲克牌卡頭數字相同,但是key值不同,所以還是會緊靠著被輸出

**示例:

public class demo04鬥地主例項 ;  

string numbers=;

int index = 0;

//給map中放牌

for (int i = 0; i < numbers.length; i++)

} indexs.add(index);

hashmap.put(index, "小王");

index++;

indexs.add(index);

hashmap.put(index, "大王");

collections.shuffle(indexs);

treesettreeset1 = new treeset();

treesettreeset2 = new treeset();

treesettreeset3 = new treeset();

treesetdipai = new treeset();

for (int i = 0; i < indexs.size(); i++) else if(i%3==0)else if(i%3==1)else if(i%3==2)

}

system.out.println("遊戲開始!");

kanpai("玩家1",treeset1,hashmap);

kanpai("玩家2",treeset2,hashmap);

kanpai("玩家3",treeset3,hashmap);

kanpai("底牌",dipai,hashmap);

}private static void kanpai(string string, treesettreeset, hashmaphashmap)

system.out.println();

}

map集合之 應用 鬥地主小遊戲之發牌

public static void main string args 完成數字與紙牌的對映關係 int key 0 for string string num poker.put 52,小鬼 keys.add 52 poker.put 53,大鬼 keys.add 53 使用雙列map hashm...

1 17 專案例項 模仿鬥地主洗牌發牌小遊戲

實現思路步驟如下 準備牌 arrylist 集合儲存,for 迴圈遍歷實現 洗牌 使用 collections 的shuffle arrybox 方法重新整理集合中的順序 發牌 使用 for 迴圈遍歷 arrylist 中的 51 張牌,然後用索引值對 3 取餘,餘數為 0,1,2 然後來隨機分配牌...

拖三鬥地主遊戲介紹

拖三鬥地主是以三人鬥地主為基礎,融入安徽宿松的拖三玩法,增加了遊戲的趣味性和複雜度。與三人鬥地主的主要差別 1 新增炸彈 5 10 k各一張 純龍 同花色的順子 四個或更多的連對 不包括2和王 通天龍 3到a的順子 其中510k和通天龍都包括一般和純色兩種。2 炸彈比較 基本原則是張數越多,炸彈越大...