1、Map相關知識總結java
1:Map集合,元素是成對出現的<key,value>,包括HashMap集合、LinkedHashMap集合。學習
HashMap<K,V>:存儲數據採用的哈希表結構,元素的存取順序不能保證一致。this
LinkedHashMap<K,V>:HashMap下有個子類LinkedHashMap,存儲數據採用的哈希表結構+鏈表結構。spa
2.經常使用的接口設計
3. Map集合遍歷鍵找值方式blog
(1)經過鍵找值排序
Map<String,String> map=new HashMap<String,String>(); map.put("星期一", "Monday"); map.put("星期日", "Sunday"); map.put("星期二", "Tuesday"); Set<String> keySet=map.keySet(); Iterator<String> it=keySet.iterator(); while(it.hasNext()){ String key=it.next(); String value=map.get(key); System.out.println(value); }
(2)經過鍵值對接口
Set<Map.Entry<String,String>> entrySet = map.entrySet(); Iterator<Map.Entry<String,String>> it=entrySet.iterator(); while(it.hasNext()){ Map.Entry<String,String> key=it.next(); String value=key.getValue(); System.out.println(value); }
2、模擬鬥地主洗牌發牌字符串
一、分析:首先應準備牌:完成數字與紙牌的映射關係:使用雙列Map(HashMap)集合,完成一個數字與字符串紙牌的對應關係。get
洗牌:經過數字完成洗牌發牌
發牌:將每一個人以及底牌設計爲ArrayList<String>,將最後3張牌直接存放於底牌,剩餘牌經過對3取模依次發牌。存放的過程當中要求數字大小與鬥地主規則的大小對應。將表明不一樣紙牌的數字分配給不一樣的玩家與底牌。
看牌:經過Map集合找到對應字符展現。經過查詢紙牌與數字的對應關係,由數字轉成紙牌字符串再進行展現。
2.具體實現代碼:
package com.example; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; public class Poker { public static void main(String[] args) { // TODO Auto-generated method stub /* * 準備花色,準備數字,map<牌的編號(共54張),牌(花色+數字)> * */ //1.花色 ArrayList<String>color = new ArrayList<String>(); color.add("♠"); color.add("♥"); color.add("♦"); color.add("♣"); //數字 ArrayList<String>number = new ArrayList<String>(); Collections.addAll(number,"3","4","5","6","7","8","9","10","J","Q","K","A","2"); //定義一個map集合:用來將數字與每一張牌進行對應 HashMap<Integer, String>map = new HashMap<Integer, String>(); int index=0; for (String thisNumber : number) { for (String thisColor : color) { map.put(index++, thisColor+thisNumber); } } //加入大小王 map.put(index++, "小王"); map.put(index++, "大王"); ArrayList<Integer>cards = new ArrayList<Integer>(); for (int i = 0; i<= 53; i++) { cards.add(i); } //洗牌 Collections.shuffle(cards); //建立三個玩家和底牌 ArrayList<Integer>iPlayer1 = new ArrayList<Integer>(); ArrayList<Integer>iPlayer2 = new ArrayList<Integer>(); ArrayList<Integer>iPlayer3 = new ArrayList<Integer>(); ArrayList<Integer>itCards = new ArrayList<Integer>(); //發牌 for(int i=0;i<cards.size();i++){ if(i>=51){ itCards.add(cards.get(i)); }else{ if(i%3==0){ iPlayer1.add(cards.get(i)); } else if(i%3==1){ iPlayer2.add(cards.get(i)); } else{ iPlayer3.add(cards.get(i)); } } } //對每人手中的牌排序 Collections.sort(iPlayer1); Collections.sort(iPlayer2); Collections.sort(iPlayer3); Collections.sort(itCards); // ArrayList<String>sPlayer1 = new ArrayList<String>(); ArrayList<String>sPlayer2 = new ArrayList<String>(); ArrayList<String>sPlayer3 = new ArrayList<String>(); ArrayList<String>sCards = new ArrayList<String>(); for(Integer key : iPlayer1){ sPlayer1.add(map.get(key)); } for(Integer key : iPlayer2){ sPlayer2.add(map.get(key)); } for(Integer key : iPlayer3){ sPlayer3.add(map.get(key)); } for(Integer key : itCards){ sCards.add(map.get(key)); } System.out.println("第一位:"+sPlayer1); System.out.println("第二位:"+sPlayer2); System.out.println("第三位:"+sPlayer3); System.out.println("底牌:"+sCards); } }
原來學過java,如今對其中一些知識進一步總結和學習,但願能更好的使用。