日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java基础day16

發(fā)布時間:2025/3/12 java 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础day16 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Java基礎day16

  • Java基礎day16-集合3
  • 1.Map集合
    • 1.1Map集合概述和特點
    • 1.2Map集合的基本功能
    • 1.3Map集合的獲取功能
    • 1.4Map集合的遍歷(方式1)
    • 1.5Map集合的遍歷(方式2)
    • 1.6Map集合的案例
      • 1.6.1HashMap集合練習之鍵是String值是Student
      • 1.6.2HashMap集合練習之鍵是Student值是String
      • 1.6.3集合嵌套之ArrayList嵌套HashMap
      • 1.6.4集合嵌套之HashMap嵌套ArrayList
      • 1.6.5統(tǒng)計字符串中每個字符出現(xiàn)的次數(shù)
  • 2.Collections集合工具類
    • 2.1Collections概述和使用
    • 2.2ArrayList集合存儲學生并排序
  • 3.斗地主案例
    • 3.1模擬斗地主案例-普通版本【應用】
    • 3.2模擬斗地主案例-升級版本

Java基礎day16-集合3

1.Map集合

1.1Map集合概述和特點

  • Map集合概述
interface Map<K,V> K:鍵的類型;V:值的類型
  • Map集合的特點
    鍵值對映射關系
    一個鍵對應一個值
    鍵不能重復,值可以重復
    元素存取無序
  • Map集合的基本使用
import java.util.HashMap; import java.util.Map;public class demo1 {public static void main(String[] args) {//創(chuàng)建集合對象Map<String, String> map = new HashMap<String, String>();//V put(K key, V value) 將指定的值與該映射中的指定鍵相關聯(lián)map.put("001", "林青霞");map.put("002", "張柏芝");map.put("003", "王祖賢");//輸出集合對象System.out.println(map);} }

1.2Map集合的基本功能

  • 方法介紹
方法名說明
V put(K key,V value)添加元素
V remove(Object key)根據(jù)鍵刪除鍵值對元素
void clear()移除所有的鍵值對元素
boolean containsKey(Object key)判斷集合是否包含指定的鍵
boolean containsValue(Object value)判斷集合是否包含指定的值
boolean isEmpty()判斷集合是否為空
int size()集合的長度,也就是集合中鍵值對的個數(shù)
import java.util.HashMap; import java.util.Map;public class demo2 {public static void main(String[] args) {//創(chuàng)建集合對象Map<String,String> map = new HashMap<String,String>();//V put(K key,V value):添加元素map.put("001", "林青霞");map.put("002", "張柏芝");map.put("003", "王祖賢");//V remove(Object key):根據(jù)鍵刪除鍵值對元素 // System.out.println(map.remove("001"));//void clear():移除所有的鍵值對元素 // map.clear();//boolean containsKey(Object key):判斷集合是否包含指定的鍵 // System.out.println(map.containsKey("001")); //true//boolean isEmpty():判斷集合是否為空 // System.out.println(map.isEmpty()); //false//int size():集合的長度,也就是集合中鍵值對的個數(shù)System.out.println(map.size());//輸出集合對象System.out.println(map);} }

1.3Map集合的獲取功能

  • 方法介紹
方法名說明
V get(Object key)根據(jù)鍵獲取值
Set keySet()獲取所有鍵的集合
Collection values()獲取所有值的集合
Set<Map.Entry<K,V>> entrySet()獲取所有鍵值對對象的集合
  • 示例代碼
import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set;public class demo3 {public static void main(String[] args) {//創(chuàng)建集合對象Map<String, String> map = new HashMap<String, String>();//添加元素map.put("001", "林青霞");map.put("002", "張柏芝");map.put("003", "王祖賢");//V get(Object key):根據(jù)鍵獲取值System.out.println(map.get("001"));//Set<K> keySet():獲取所有鍵的集合Set<String> keySet = map.keySet();for (String key : keySet) {System.out.println(key);}//Collection<V> values():獲取所有值的集合Collection<String> values = map.values();for (String value : values) {System.out.println(value);}} }

1.4Map集合的遍歷(方式1)

- 遍歷思路 我們剛才存儲的元素都是成對出現(xiàn)的,所以我們把Map看成是一個夫妻對的集合把所有的丈夫給集中起來遍歷丈夫的集合,獲取到每一個丈夫根據(jù)丈夫去找對應的妻子 - 步驟分析獲取所有鍵的集合。用keySet()方法實現(xiàn)遍歷鍵的集合,獲取到每一個鍵。用增強for實現(xiàn)根據(jù)鍵去找值。用get(Object key)方法實現(xiàn)
  • 代碼實現(xiàn)
import java.util.HashMap; import java.util.Map; import java.util.Set;public class demo4 {public static void main(String[] args) {//創(chuàng)建集合對象Map<String, String> map = new HashMap<String, String>();//添加元素map.put("張無忌", "趙敏");map.put("郭靖", "黃蓉");map.put("楊過", "小龍女");//獲取所有鍵的集合。用keySet()方法實現(xiàn)Set<String> keySet = map.keySet();//遍歷鍵的集合,獲取到每一個鍵。用增強for實現(xiàn)for (String key : keySet) {//根據(jù)鍵去找值。用get(Object key)方法實現(xiàn)String value = map.get(key);System.out.println(key + "," + value);}} }

1.5Map集合的遍歷(方式2)

- 遍歷思路我們剛才存儲的元素都是成對出現(xiàn)的,所以我們把Map看成是一個夫妻對的集合獲取所有結婚證的集合遍歷結婚證的集合,得到每一個結婚證根據(jù)結婚證獲取丈夫和妻子 - 步驟分析獲取所有鍵值對對象的集合Set<Map.Entry<K,V>> entrySet():獲取所有鍵值對對象的集合遍歷鍵值對對象的集合,得到每一個鍵值對對象用增強for實現(xiàn),得到每一個Map.Entry根據(jù)鍵值對對象獲取鍵和值用getKey()得到鍵用getValue()得到值
  • 代碼實現(xiàn)
import java.util.HashMap; import java.util.Map; import java.util.Set;public class demo5 {public static void main(String[] args) {//創(chuàng)建集合對象Map<String, String> map = new HashMap<String, String>();//添加元素map.put("張無忌", "趙敏");map.put("郭靖", "黃蓉");map.put("楊過", "小龍女");//獲取所有鍵值對對象的集合Set<Map.Entry<String, String>> entryset = map.entrySet();//遍歷鍵值對對象的集合,得到每一個鍵值對對象for (Map.Entry<String, String> me : entryset) {String key = me.getKey();String value = me.getValue();System.out.println(key + "," + value);}} }

1.6Map集合的案例

1.6.1HashMap集合練習之鍵是String值是Student

  • 案例需求
    創(chuàng)建一個HashMap集合,鍵是學號(String),值是學生對象(Student)。存儲三個鍵值對元素,并遍歷
  • 代碼實現(xiàn)
import java.util.HashMap; import java.util.Map; import java.util.Set;/* 需求:創(chuàng)建一個HashMap集合,鍵是學號(String),值是學生對象(Student)。存儲三個鍵值對元素,并遍歷 思路:1:定義學生類2:創(chuàng)建HashMap集合對象3:創(chuàng)建學生對象4:把學生添加到集合5:遍歷集合方式1:鍵找值方式2:鍵值對對象找鍵和值 */ public class demo1 {public static void main(String[] args) {//創(chuàng)建HashMap集合對象Map<String, Student> map = new HashMap<String, Student>();//創(chuàng)建學生對象Student s1 = new Student("林青霞", 30);Student s2 = new Student("張曼玉", 35);Student s3 = new Student("王祖賢", 33);//把學生添加到集合map.put("001", s1);map.put("002", s2);map.put("003", s3);//遍歷集合//方式1:鍵找值Set<String> keySet = map.keySet();for (String key : keySet) {Student value = map.get(key);System.out.println(key + "," + value.getName() + "," + value.getAge());}System.out.println("------");//方式2:鍵值對對象找鍵和值Set<Map.Entry<String, Student>> entrySet = map.entrySet();for (Map.Entry<String, Student> me : entrySet) {String key = me.getKey();Student value = me.getValue();System.out.println(key + "," + value.getName() + "," + value.getAge());}} }

1.6.2HashMap集合練習之鍵是Student值是String

  • 案例需求
    創(chuàng)建一個HashMap集合,鍵是學生對象(Student),值是居住地 (String)。存儲多個元素,并遍歷。
    要求保證鍵的唯一性:如果學生對象的成員變量值相同,我們就認為是同一個對象
  • 代碼實現(xiàn)
//學生類 public class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;if (age != student.age) return false;return name != null ? name.equals(student.name) : student.name == null;}@Overridepublic int hashCode() {int result = name != null ? name.hashCode() : 0;result = 31 * result + age;return result;} }//測試類 import java.util.HashMap; import java.util.Set;public class demo {public static void main(String[] args) {//創(chuàng)建HashMap集合對象HashMap<Student, String> map = new HashMap<Student, String>();//創(chuàng)建學生對象Student s1 = new Student("林青霞", 30);Student s2 = new Student("張曼玉", 35);Student s3 = new Student("王祖賢", 33);Student s4 = new Student("王祖賢", 33);//把學生添加到集合map.put(s1, "深圳");map.put(s2, "北京");map.put(s3, "上海");map.put(s4, "廣州");//遍歷集合Set<Student> keySet = map.keySet();for (Student key : keySet) {String value = map.get(key);System.out.println(key.getName() + "," + key.getAge() + "," + value);}} }

1.6.3集合嵌套之ArrayList嵌套HashMap

  • 案例需求
    創(chuàng)建一個ArrayList集合,存儲三個元素,每一個元素都是HashMap
    每一個HashMap的鍵和值都是String,并遍歷。
  • 代碼實現(xiàn)
import java.util.ArrayList; import java.util.HashMap; import java.util.Set;public class demo2 {public static void main(String[] args) {//創(chuàng)建ArrayList集合ArrayList<HashMap<String, String>> array = new ArrayList<HashMap<String, String>>();//創(chuàng)建HashMap集合,并添加鍵值對元素HashMap<String, String> hm1 = new HashMap<>();hm1.put("孫策", "大喬");hm1.put("周瑜", "小喬");//把HashMap作為元素添加到ArrayList集合array.add(hm1);//創(chuàng)建HashMap集合,并添加鍵值對元素HashMap<String, String> hm2 = new HashMap<>();hm2.put("郭靖", "黃蓉");hm2.put("楊過", "小龍女");//把HashMap作為元素添加到ArrayList集合array.add(hm2);//創(chuàng)建HashMap集合,并添加鍵值對元素HashMap<String, String> hm3 = new HashMap<>();hm3.put("令狐沖", "任盈盈");hm3.put("林平之", "岳靈珊");//把HashMap作為元素添加到ArrayList集合array.add(hm3);//遍歷ArrayList集合for (HashMap<String, String> hm : array) {Set<String> keySet = hm.keySet();for (String key : keySet) {String value = hm.get(key);System.out.println(key + "," + value);}}} }

1.6.4集合嵌套之HashMap嵌套ArrayList

  • 案例需求
    創(chuàng)建一個HashMap集合,存儲三個鍵值對元素,每一個鍵值對元素的鍵是String,值是ArrayList
    每一個ArrayList的元素是String,并遍歷。
  • 代碼實現(xiàn)
import java.util.ArrayList; import java.util.HashMap; import java.util.Set;public class demo3 {public static void main(String[] args) {//創(chuàng)建HashMap集合HashMap<String, ArrayList<String>> hm = new HashMap<String, ArrayList<String>>();//創(chuàng)建ArrayList集合,并添加元素ArrayList<String> sgyy = new ArrayList<>();sgyy.add("諸葛亮");sgyy.add("趙云");//把ArrayList作為元素添加到HashMap集合hm.put("三國演義", sgyy);ArrayList<String> xyj = new ArrayList<>();xyj.add("唐僧");xyj.add("孫悟空");//把ArrayList作為元素添加到HashMap集合hm.put("西游記", xyj);ArrayList<String> shz = new ArrayList<>();shz.add("武松");shz.add("魯智深");//把ArrayList作為元素添加到HashMap集合hm.put("水滸傳", shz);//遍歷HashMap集合Set<String> keySet = hm.keySet();for (String key : keySet) {System.out.println(key);ArrayList<String> array = hm.get(key);for (String s : array) {System.out.println("\t"+s);}}} }

1.6.5統(tǒng)計字符串中每個字符出現(xiàn)的次數(shù)

  • 案例需求
    鍵盤錄入一個字符串,要求統(tǒng)計字符串中每個字符串出現(xiàn)的次數(shù)。
    舉例:鍵盤錄入“aababcabcdabcde” 在控制臺輸出:“a(5)b(4)c(3)d(2)e(1)”
  • 代碼實現(xiàn)
import java.util.HashMap; import java.util.Scanner; import java.util.Set;public class demo4 {public static void main(String[] args) {//鍵盤錄入一個字符串Scanner sc = new Scanner(System.in);System.out.println("請輸入一個字符串:");String line = sc.nextLine();//創(chuàng)建HashMap集合,鍵是Character,值是IntegerHashMap<Character, Integer> hm = new HashMap<Character, Integer>();//遍歷字符串,得到每一個字符for (int i = 0; i < line.length(); i++) {char key = line.charAt(i);//拿得到的每一個字符作為鍵到HashMap集合中去找對應的值,看其返回值Integer value = hm.get(key);if (value == null) {//如果返回值是null:說明該字符在HashMap集合中不存在,就把該字符作為鍵,1作為值存儲hm.put(key, 1);} else {//如果返回值不是null:說明該字符在HashMap集合中存在,把該值加1,然后重新存儲該字符和對應的值value++;hm.put(key, value);}}//遍歷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();//輸出結果System.out.println(result);} }

2.Collections集合工具類

2.1Collections概述和使用

  • Collections類的作用
    是針對集合操作的工具類
  • Collections類常用方法
方法名說明
public static void sort(List list)將指定的列表按升序排序
public static void reverse(List<?> list)反轉指定列表中元素的順序
public static void shuffle(List<?> list)使用默認的隨機源隨機排列指定的列表
  • 示例代碼
import java.util.ArrayList; import java.util.Collections; import java.util.List;public class demo5 {public static void main(String[] args) {//創(chuàng)建集合對象List<Integer> list = new ArrayList<Integer>();//添加元素list.add(30);list.add(20);list.add(10);list.add(40);list.add(50);//public static <T extends Comparable<? super T>> void sort?(List<T> list):將指定的列表按升序排序Collections.sort(list);//public static void reverse?(List<?> list):反轉指定列表中元素的順序Collections.reverse(list);//public static void shuffle?(List<?> list):使用默認的隨機源隨機排列指定的列Collections.shuffle(list);System.out.println(list);} }

2.2ArrayList集合存儲學生并排序

  • 案例需求
    ArrayList存儲學生對象,使用Collections對ArrayList進行排序
    要求:按照年齡從小到大排序,年齡相同時,按照姓名的字母順序排序
  • 代碼實現(xiàn)
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator;public class demo {public static void main(String[] args) {//創(chuàng)建ArrayList集合對象ArrayList<Student> array = new ArrayList<Student>();//創(chuàng)建學生對象Student s1 = new Student("linqingxia", 30);Student s2 = new Student("zhangmanyu", 35);Student s3 = new Student("wangzuxian", 33);Student s4 = new Student("liuyan", 33);//把學生添加到集合array.add(s1);array.add(s2);array.add(s3);array.add(s4);//使用Collections對ArrayList集合排序//sort?(List<T> list, Comparator<? super T> c)Collections.sort(array, new Comparator<Student>() {@Overridepublic int compare(Student s1, Student s2) {int num = s1.getAge() - s2.getAge();int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num;return num2;}});//遍歷集合for (Student s : array) {System.out.println(s.getName() + "," + s.getAge());}} }

3.斗地主案例

3.1模擬斗地主案例-普通版本【應用】

  • 案例需求
    通過程序實現(xiàn)斗地主過程中的洗牌,發(fā)牌和看牌
  • 代碼實現(xiàn)
import java.util.ArrayList; import java.util.Collections;public class demo2 {public static void main(String[] args) {//創(chuàng)建一個牌盒,也就是定義一個集合對象,用ArrayList集合實現(xiàn)ArrayList<String> poker = new ArrayList<String>();//往牌盒里面裝牌/* ?2,?3,?4...?K,?A ?2,... ?2,... ?2,... 小王,大王 *///定義花色數(shù)組String[] colors = {"?", "?", "?", "?"};//定義點數(shù)數(shù)組String[] numbers = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};//洗牌,也就是把牌打撒,用Collections的shuffle()方法實現(xiàn)for (String color : colors) {for (String number : numbers) {poker.add(color + number);}}poker.add("大王");poker.add("小王");Collections.shuffle(poker);//發(fā)牌,也就是遍歷集合,給三個玩家發(fā)牌ArrayList<String> p1 = new ArrayList<String>();ArrayList<String> p2 = new ArrayList<String>();ArrayList<String> p3 = new ArrayList<String>();ArrayList<String> p4 = new ArrayList<String>();for (int i = 0; i < poker.size(); i++) {if (i >= poker.size() - 3) {p4.add(poker.get(i));} else if (i % 3 == 0) {p1.add(poker.get(i));} else if (i % 3 == 1) {p2.add(poker.get(i));} else if (i % 3 == 2) {p3.add(poker.get(i));}}//看牌,也就是三個玩家分別遍歷自己的牌lookpoker("001", p1);lookpoker("002", p2);lookpoker("003", p3);lookpoker("004", p4);}public static void lookpoker(String name, ArrayList<String> array) {System.out.print(name + ":");for (String s : array) {System.out.print(s);}System.out.println();} }

3.2模擬斗地主案例-升級版本

  • 案例需求
    通過程序實現(xiàn)斗地主過程中的洗牌,發(fā)牌和看牌。要求:對牌進行排序
  • 代碼實現(xiàn)
import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.TreeSet;public class demo6 {public static void main(String[] args) {//創(chuàng)建HashMap,鍵是編號,值是牌HashMap<Integer, String> hm = new HashMap<Integer, String>();//創(chuàng)建ArrayList,存儲編號ArrayList<Integer> array = new ArrayList<Integer>();//創(chuàng)建花色數(shù)組和點數(shù)數(shù)組String[] colors = {"?", "?", "?", "?"};String[] numbers = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};//從0開始往HashMap里面存儲編號,并存儲對應的牌。同時往ArrayList里面存儲編號int index = 0;for (String number : numbers) {for (String color : colors) {hm.put(index, number + color);array.add(index);index++;}}hm.put(index, "小王");array.add(index);index++;hm.put(index, "大王");array.add(index);//洗牌(洗的是編號),用Collections的shuffle()方法實現(xiàn)Collections.shuffle(array);//發(fā)牌(發(fā)的也是編號,為了保證編號是排序的,創(chuàng)建TreeSet集合接收)TreeSet<Integer> p1 = new TreeSet<Integer>();TreeSet<Integer> p2 = new TreeSet<Integer>();TreeSet<Integer> p3 = new TreeSet<Integer>();TreeSet<Integer> p4 = new TreeSet<Integer>();for (int i = 0; i < array.size(); i++) {if (i >= array.size() - 3) {p4.add(array.get(i));} else if (i % 3 == 0) {p1.add(array.get(i));} else if (i % 3 == 1) {p2.add(array.get(i));} else if (i % 3 == 2) {p3.add(array.get(i));}}//調用看牌方法lookpoker("001", p1, hm);lookpoker("002", p2, hm);lookpoker("003", p3, hm);lookpoker("004", p4, hm);}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();} }

總結

以上是生活随笔為你收集整理的Java基础day16的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。