Java16-day07【Map(概述、特点、功能、遍历)、HashMap集合练习、集合嵌套、Collections、模拟斗地主升级版】
- 視頻+資料(工程源碼、筆記)【鏈接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg? ?提取碼:zjxs】
- Java基礎--學習筆記(零起點打開java世界的大門)--博客匯總表
目? ?錄
01_Map集合概述和特點
5.1、Map集合概述和特點
02_Map集合的基本功能
5.2、Map集合的基本功能
03_Map集合的獲取功能
5.3、Map集合的獲取功能
04_Map集合的遍歷(方式1)
5.4、Map集合的遍歷(方式1)
05_Map集合的遍歷(方式2)
5.5、Map集合的遍歷(方式2)
06_HashMap集合練習之鍵是String值是Student
案例:HashMap集合存儲學生對象并遍歷
07_HashMap集合練習之鍵是Student值是String
案例:HashMap集合存儲學生對象并遍歷
08_集合嵌套之ArrayList嵌套HashMap
案例:ArrayList集合嵌套HashMap元素并遍歷
09_集合嵌套之HashMap嵌套ArrayList
案例:HashMap集合存儲ArrayList元素并遍歷
10_統計字符串中每個字符出現的次數
案例:統計字符串中每個字符出現的次數
11_Collections概述和使用
6.1、Collections概述和使用
12_ArrayList集合存儲學生并排序
案例:ArrayList存儲學生對象并排序
13_模擬斗地主
案例:模擬斗地主
14_模擬斗地主升級版案例分析
案例:模擬斗地主升級版
15_模擬斗地主升級版代碼實現
01_Map集合概述和特點
5.1、Map集合概述和特點
Map集合的特點
- 鍵值對映射關系
- 一個鍵對應一個值
- 鍵不能重復,值可以重復
- 元素存取無序
Map中,K:存儲鍵的類型;V:存儲值的類型。
02_Map集合的基本功能
5.2、Map集合的基本功能
03_Map集合的獲取功能
5.3、Map集合的獲取功能
04_Map集合的遍歷(方式1)
5.4、Map集合的遍歷(方式1)
我們剛才存儲的元素都是成對出現的,所以我們把Map看成是一個夫妻對的集合。
遍歷思路
- 把所有的丈夫給集中起來
- 遍歷丈夫的集合,獲取到每一個丈夫
- 根據丈夫去找對應的妻子
步驟分析
- 獲取所有鍵的集合。用keySet()方法實現
- 遍歷鍵的集合,獲取到每一個鍵。用增強for實現
- 根據鍵去找值。用get(Object key)方法實現
05_Map集合的遍歷(方式2)
5.5、Map集合的遍歷(方式2)
06_HashMap集合練習之鍵是String值是Student
案例:HashMap集合存儲學生對象并遍歷
07_HashMap集合練習之鍵是Student值是String
案例:HashMap集合存儲學生對象并遍歷
鍵相同,值覆蓋!-> 需要在學生類中,重寫hashCode()與equals()方法
Alt+Insert
08_集合嵌套之ArrayList嵌套HashMap
案例:ArrayList集合嵌套HashMap元素并遍歷
09_集合嵌套之HashMap嵌套ArrayList
案例:HashMap集合存儲ArrayList元素并遍歷
10_統計字符串中每個字符出現的次數
案例:統計字符串中每個字符出現的次數
使用HashMap,鍵無順序!!!--> TreeMap(TreeMap可以對鍵進行排序,用法與HashMap差不多!)
? ?? ?
? ??
package com.itheima_06;import java.util.HashMap; import java.util.Scanner; import java.util.Set; import java.util.TreeMap;public class HashMapDemo {public static void main(String[] args) {// 1、鍵盤錄入一個字符串Scanner sc = new Scanner(System.in);System.out.println("請輸入一個字符串:"); // aababcabcdabcde fqylovelinqingxiaString line = sc.nextLine();// 2、創建HashMap集合,鍵是Character,值是Integer // HashMap<Character, Integer> hm = new HashMap<Character, Integer>();TreeMap<Character, Integer> hm = new TreeMap<Character, Integer>();// 3、遍歷字符串,得到每一個字符for (int i = 0; i < line.length(); i++) {char key = line.charAt(i);// 4.、得到的每一個字符作為鍵到HashMap集合中去找對應的值,看其返回值Integer value = hm.get(key);if (value == null) {// 4.1、如果返回值是null:說明該字符在HashMap集合中不存在,就把該字符作為鍵,1作為值存儲hm.put(key, 1);} else {// 4.2、如果返回值不是null:說明該字符在HashMap集合中存在,把該值加1,然后重新存儲該字符和對應的值value++;hm.put(key, value);}}// 5、遍歷HashMap集合,得到鍵和值,按照要求進行拼接StringBuilder sb = new StringBuilder();Set<Character> keySet = hm.keySet();for (Character key : keySet) {Integer value = hm.get(key);sb.append(key).append("(").append(value).append(")");}String result = sb.toString();// 6、輸出結果System.out.println(result);} }11_Collections概述和使用
6.1、Collections概述和使用
Collections類的概述and作用
- 是針對集合操作的工具類。
Collections類的常用方法
- public static <T extends Comparable<? super T>> void sort?(List<T> list):將指定的列表按升序排序
- public static void reverse?(List<?> list):反轉指定列表中元素的順序
- public static void shuffle?(List<?> list):使用默認的隨機源隨機排列指定的列表
12_ArrayList集合存儲學生并排序
案例:ArrayList存儲學生對象并排序
static <T extends Comparable<? super T>>?void??sort?(List<T>?list) 根據其元素的natural ordering按照升序排列指定的列表。
根據 自然排序,對元素進行排序。需要讓集合中的元素實現自然排序接口。?
static <T> void sort?(List<T> list, Comparator<? super T> c) 根據指定的比較器引起的順序對指定的列表進行排序。
13_模擬斗地主
案例:模擬斗地主
package com.itheima_02;import java.util.ArrayList; import java.util.Collections;public class PokerDemo {public static void main(String[] args) {// 1:創建一個牌盒,也就是定義一個集合對象,用ArrayList集合實現ArrayList<String> array = new ArrayList<String>();// 2:往牌盒里面裝牌/*?2,?3,?4...?K,?A?2,...?2,...?2,...小王,大王*///定義花色數組String[] colors = {"?", "?", "?", "?"};//定義點數數組String[] numbers = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};for (String color : colors) {for (String number : numbers) {array.add(color + number);}}array.add("小王");array.add("大王");// 3:洗牌,也就是把牌打撒,用Collections的shuffle()方法實現Collections.shuffle(array);// System.out.println(array);// 4:發牌,也就是遍歷集合,給三個玩家發牌ArrayList<String> lqxArray = new ArrayList<String>();ArrayList<String> lyArray = new ArrayList<String>();ArrayList<String> fqyArray = new ArrayList<String>();ArrayList<String> dpArray = new ArrayList<String>(); // 3張底牌for (int i = 0; i < array.size(); i++) {String poker = array.get(i);if (i >= array.size() - 3) { // 最后3張牌dpArray.add(poker);} else if (i % 3 == 0) { // 3個玩家,對3取余lqxArray.add(poker);} else if (i % 3 == 1) {lyArray.add(poker);} else if (i % 3 == 2) {fqyArray.add(poker);}}// 5:看牌,也就是三個玩家分別遍歷自己的牌lookPoker("林青霞", lqxArray);lookPoker("柳巖", lyArray);lookPoker("風清揚", fqyArray);lookPoker("底牌", dpArray);}//看牌的方法public static void lookPoker(String name, ArrayList<String> array) {System.out.print(name + "的牌是:");for (String poker : array) {System.out.print(poker + " ");}System.out.println();} }??
14_模擬斗地主升級版案例分析
案例:模擬斗地主升級版
15_模擬斗地主升級版代碼實現
package com.itheima_03;import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.TreeSet;public class PokerDemo {public static void main(String[] args) {// 1:創建HashMap,鍵是編號,值是牌HashMap<Integer, String> hm = new HashMap<Integer, String>();// 2:創建ArrayList,存儲編號ArrayList<Integer> array = new ArrayList<Integer>();// 3:創建花色數組和點數數組String[] colors = {"?", "?", "?", "?"};String[] numbers = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};// 4:從0開始往HashMap里面存儲編號,并存儲對應的牌。同時往ArrayList里面存儲編號int index = 0;for (String number : numbers) {for (String color : colors) {hm.put(index, color + number);array.add(index);index++;}}hm.put(index, "小王");array.add(index);index++;hm.put(index, "大王");array.add(index);// 5:洗牌(洗的是編號),用Collections的shuffle()方法實現Collections.shuffle(array);// 6:發牌(發的也是編號,為了保證編號是排序的,創建TreeSet集合接收)TreeSet<Integer> lqxSet = new TreeSet<Integer>();TreeSet<Integer> lySet = new TreeSet<Integer>();TreeSet<Integer> fqySet = new TreeSet<Integer>();TreeSet<Integer> dpSet = new TreeSet<Integer>();for (int i = 0; i < array.size(); i++) {int x = array.get(i);if (i >= array.size() - 3) { // 最后3個索引dpSet.add(x);} else if (i % 3 == 0) {lqxSet.add(x);} else if (i % 3 == 1) {lySet.add(x);} else if (i % 3 == 2) {fqySet.add(x);}}// 8:調用看牌方法lookPoker("林青霞", lqxSet, hm);lookPoker("柳巖", lySet, hm);lookPoker("風清揚", fqySet, hm);lookPoker("底牌", dpSet, hm);}// 7:定義方法看牌(遍歷TreeSet集合,獲取編號,到HashMap集合找對應的牌)public static void lookPoker(String name, TreeSet<Integer> ts, HashMap<Integer, String> hm) {System.out.print(name + "的牌是:");for (Integer key : ts) {String poker = hm.get(key);System.out.print(poker + " ");}System.out.println();} }總結
以上是生活随笔為你收集整理的Java16-day07【Map(概述、特点、功能、遍历)、HashMap集合练习、集合嵌套、Collections、模拟斗地主升级版】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java15-day06【Set、Has
- 下一篇: Java17-day08【File(创建