java获取字典所有的key_java字典,多层字典,斗地主发牌,实例展示
在我們的日常工作與生活當中,java都有涉及到。它具有十分強大的功能,并且內容也極其豐富,使用頻率也是很高的,所以大家對于java的學習熱情也是十分積極的。今天就來為大家介紹java字典,多層字典,斗地主發牌的實例展示,一起來看看吧。
首先是一個簡單的介紹,如下所示:
字典 Map 存鍵值對
/ \
hashmapLinkedHashMap
數組+鏈表和數組+雙鏈表(有序)
自定義鍵對象(不能重)需要重寫鍵的hashCode()方法、equals()方法。
map實例代碼如下:import?java.util.Map;
import?java.util.Set;
public?class?Demo01
{
public?static?void?main(String[]?args)
{
Map??map?=?new?HashMap??();
map.put("a",?"12");?//添加
map.put("b",?"1");
map.put("a",?"2");?//覆蓋a的值
System.out.println(map);?//{a=2,b=1}?無順序
//String?v=map.remove("b");//刪除鍵的值?返回
//System.out.println(v);
System.out.println(map.get("a"));?//取值??沒有返回null
//?通過keyset遍歷map?增強for
//?Map不能直接用?迭代器/增強for?遍歷?需要轉Set才能用
Set??keys?=?map.keySet();?//?返回集合中所有鍵
for?(String?key:?keys)
{
String?value?=?map.get(key);?//?獲取鍵的值
System.out.println(key?+?"..."?+?value);
}
//通過Iterater
Set??keys2?=?map.keySet();
Iterator??it?=?keys2.iterator();
while?(it.hasNext())
{
String?key?=?it.next();
String?value?=?map.get(key);
System.out.println(key?+?"..."?+?value));
}
//增強for?+?entrySet方法(鍵值對對象)
Set?>?entrys?=?map.entrySet();
for?(Map.Entry??entry:?entrys)
{
String?key?=?entry.getKey();
String?value?=?entry.getValue();
System.out.println(key?+?"..."?+?value);
}
//Iterater遍歷
Set?>?entrys2?=?map.entrySet();
Iterator?>?it2?=?entrys.iterator();
while?(it2.hasNext())
{
Map.Entry??entry2?=?it2.next();
String?key2?=?entry2.getKey();
String?value2?=?entry2.getValue();
System.out.println(key2?+?"..."?+?value2);
}
}
}
Map??map?=?new?HashMap??();?//鍵內容不重
map.put(new?Student("lisi",?28),?"上海");?//?Student重寫HashCode()、equals()
多層字典實例代碼如下:HashMap?>?oracle?=?new?HashMap?>?();
HashMap??java0601?=?new?HashMap??();
java0601.put("001",?new?Person("小紅帽",?18));
java0601.put("002",?new?Person("小丸子",?20));
HashMap??java0929?=?new?HashMap??();
java0929.put("001",?new?Person("張超",?22));
java0929.put("002",?new?Person("趙玉仙",?21));
oracle.put("java0601",?java0601);
oracle.put("java0929",?java0929);
//遍歷??增強for+keyset
Set??classes?=?oracle.keySet();?//所有鍵?集合???班級名字集合
for?(String?clas:?classes)
{
HashMap??c?=?oracle.get(clas);?//獲取班級集合?值
Set??stunumbers?=?c.keySet();?//?人名集合?鍵
for?(String?num:?stunumbers)
{
Person?p?=?c.get(num);?//人名集合?值
System.out.println("班級"?+?clas?+?"學號"?+?num?+?"學生"?+?p);
}
}
斗地主發牌實例代碼如下:public?static?void?main(String[]?args)
{
//準備容器????????????????????????????????????//牌序??牌值
HashMap??pookerMap?=?new?HashMap??();
ArrayList??pookerNumer?=?new?ArrayList??();?//牌序
//準備牌
String[]?number?=?{
"2"
,?"A"
,?"K"
,?"Q"
,?"J"
,?"10"
,?"9"
,?"8"
,?"7"
,?"6"
,?"5"
,?"4"
,?"3"
};
String[]?color?=?{
"?"
,?"?"
,?"?"
,?"?"
};
int?index?=?2;
for?(String?num:?number)
{
for?(String?col:?color)
{
pookerMap.put(index,?col?+?num);?//向Map中添加??牌序:牌值
pookerNumer.add(index);?//向ArrayList添加??牌序號
index++;
}
}
//添加大小王
pookerMap.put(0,?"大王");
pookerNumer.add(0);
pookerMap.put(1,?"小王");
pookerNumer.add(1);
System.out.println(pookerMap);
//洗牌、發牌
Collections.shuffle(pookerNumer);?//打亂??ArrayList?牌序號
ArrayList??player1?=?new?ArrayList??();
ArrayList??player2?=?new?ArrayList??();
ArrayList??player3?=?new?ArrayList??();
ArrayList??bottom?=?new?ArrayList??();
for?(int?i?=?0;?i?
{?//分發??牌序號
if?(i?
{
bottom.add(pookerNumer.get(i));
}?//?前三個序號?添加?底牌
else?if?(i?%?3?==?0)
{
player1.add(pookerNumer.get(i));
}
else?if?(i?%?3?==?1)
{
player2.add(pookerNumer.get(i));
}
else?if?(i?%?3?==?2)
{
player3.add(pookerNumer.get(i));
}
}
//對三個玩家的牌?排序
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);
Collections.sort(bottom);
//看牌
lookPooker("玩家1",?player1,?pookerMap);?//?名稱??牌序號??字典
lookPooker("玩家2",?player2,?pookerMap);
lookPooker("玩家3",?player3,?pookerMap);
lookPooker("底牌",?bottom,?pookerMap);
}
public?static?void?lookPooker(String?name,?ArrayList??player,?HashMap??pookerMap)
{
System.out.println(name?+?":?");
for?(int?index:?player)
{
System.out.print(pookerMap.get(index)?+?"?");?//?對應字典?找出?牌序號的?值
}
System.out.println();
}
以上就是關于java字典,多層字典,斗地主發牌的主要實例展示了。如果你對java知識感興趣,想要了解更多java經典例子和常見問題,敬請關注奇Q工具網。
推薦閱讀:
總結
以上是生活随笔為你收集整理的java获取字典所有的key_java字典,多层字典,斗地主发牌,实例展示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows7无法自动安装FT232R
- 下一篇: 分布式数据库或成为新增量