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

歡迎訪問 生活随笔!

生活随笔

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

java

Java学习打卡第八天——[Collection终结之HashMap,Collections的简介和使用]

發布時間:2023/12/14 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java学习打卡第八天——[Collection终结之HashMap,Collections的简介和使用] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天已經是學習集合的第三天;
【1】第一天學習了Collection集合的List,ArrayList和LinkedList的常用方法和基礎規則,
ArrayList特點總結:
1、ArrayList底層是數組,所以在獲取元素時比較方便,屬于List分支下的一種,允許集合中有相同的元素
2、LinkedList底層是鏈表,所有具有鏈表的特性在獲取首元素,最有元素,插入元素,刪除元素時比較方便,屬于List分支下的一種
第一天學習集合的鏈接:
https://blog.csdn.net/weixin_44606952/article/details/122408384?spm=1001.2014.3001.5501
【2】第二天學習的是Collection集合的Set,TreeSet,和Generic(泛型),
1、Set和HashSet底層都是Hash,HashSet 基于 HashMap 來實現的,是一個不允許有重復元素的集合
2、HashSet 允許有 null 值。
3、HashSet 是無序的,即不會記錄插入的順序。
4、HashSet 不是線程安全的, 如果多個線程嘗試同時修改 HashSet,則最終結果是不確定的。

https://blog.csdn.net/weixin_44606952/article/details/122413151?spm=1001.2014.3001.5501
【3】最后一天學習的是Collection集合的Map集合和Collections的使用

HashMap的特性簡介

1、HashMap 是一個散列表,它存儲的內容是鍵值對(key-value)映射。
2、HashMap 實現了== Map 接口,根據鍵的 HashCode 值存儲數據,具有很快的訪問速度,最多允許一條記錄的鍵為 null,不支持線程同步。==
3、HashMap 是無序的,即不會記錄插入的順序。
4、HashMap 繼承于AbstractMap,實現了 Map、Cloneable、java.io.Serializable 接口。
Hash的常用功能:

基本功能在創建Map集合之后直接掉方法使用就可以,這里主要介紹一下HashMap的遍歷方法

HashMap的遍歷方法一共有兩種:
第一種鍵找值的方法遍歷:

1、使用HashMap的keySet()方法獲取所有的鍵(key),放到一個集合中
2、遍歷鍵的集合,獲取每一個key
3、根據key獲取每一個value(值),使用的是Map的get()
使用示例01:

Set<String> set = map.keySet();for (String key : set){String value = map.get(key);System.out.println(key+","+value);}

遍歷方法二:
直接看圖片畫黃色部分,解釋的很清楚;

使用示例:

Set<Map.Entry<String,String>> sm = map.entrySet();//增強for()得到每一個鍵值對,再利用getkey()和getvalue()得到鍵值對for (Map.Entry<String ,String> me : sm){String key = me.getKey();String value = me.getValue();System.out.println(key+","+value);}

下面是幾個使用集合的案例以供學習:
案例01:

Student類的完整代碼:

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;} }

測試類:

import java.util.HashMap; import java.util.Map; import java.util.Set;public class MapDemo {public static void main(String[] args) {Map<String,Student> map = new HashMap<String,Student>();Student s1 = new Student("林青霞",22);Student s2 = new Student("張曼玉",23);Student s3 = new Student("王祖賢",24);Student s4 = new Student("朱茵",25);map.put("it001",s1);map.put("it002",s2);map.put("it003",s3);map.put("it004",s4);//遍歷集合方法一//鍵值對對象找鍵和值//使用map.entrySet()方法得到鍵值對,然后利用get方法得到鍵和值Set<Map.Entry<String,Student>> mp = map.entrySet();for (Map.Entry<String,Student> me : mp){String id = me.getKey();Student s = me.getValue();System.out.println(id+","+s.getName()+","+s.getAge());}System.out.println("-----------");//遍歷集合方法二//鍵找值//先使用Set集合得到所有鍵的集合在利用map的get方法得到所有的值Set<String> set = map.keySet();for (String s : set){Student stu = map.get(s);System.out.println(s+","+stu.getName()+","+stu.getAge());}} }

綜合案例02:

import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.Set;public class HashMapDemo {public static void main(String[] args) {ArrayList<HashMap<String,String>> arr = new ArrayList<HashMap<String,String>>();HashMap<String,String> map = new HashMap<String,String>();map.put("黃蓉","郭靖");map.put("楊康","穆念慈");HashMap<String,String> map1 = new HashMap<String,String>();map1.put("楊過","小龍女");map1.put("令狐沖","任盈盈");HashMap<String,String> map2 = new HashMap<String,String>();map2.put("董永","七仙女");map2.put("林平之","岳靈珊");arr.add(map);arr.add(map1);arr.add(map2);//遍歷集合//牽扯到集合嵌套集合使用雙層循環依次實現每一層集合的遍歷即可for (Map<String ,String> me : arr){Set<Map.Entry<String, String>> set = me.entrySet();for (Map.Entry<String, String> mp : set){String key = mp.getKey();String value = mp.getValue();System.out.println(key+","+value);}}System.out.println("----------");for (Map<String ,String> me : arr){Set<String> key = me.keySet();for (String keyy : key){String value = me.get(keyy);System.out.println(keyy+","+value);}}} }

案例03:

案例提示:
關鍵部分在于把字符串正確添加到集合中去,方法是對每碰到一個字符就是用get方法獲得對應的值(也就是出現次數),如果為空就把字符直接添加,如果不是就把值+1,然后重新添加,根據HashMap的特點會覆蓋掉以前的鍵值對,另外,如果想讓鍵值對變得有序創建集合的時候改用TreeMap即可

import java.util.HashMap; import java.util.Scanner; import java.util.Set; import java.util.TreeMap;public class MapDemo {public static void main(String[] args) {//創建一個HashMap集合對象,鍵是Character值是Integer類型HashMap<Character,Integer> map = new HashMap<Character,Integer>();//如果想讓集合變得有序可以使用TreeMap // TreeMap<Character,Integer> map = new TreeMap<Character,Integer>();//輸入一個字符串Scanner sc = new Scanner(System.in);String line = sc.nextLine();//遍歷字符串for (int i = 0; i < line.length(); i++){//用一個字符key來接受,使用get方法得到鍵為key對應的值的結果char key = line.charAt(i);Integer value = map.get(key);//如果值是null說明集合中沒有存儲該字符,不等于null就把值的數值加1,再次存儲HashMap集合會自動覆蓋以前的鍵值對if (value == null){map.put(key,1);}else {value++;map.put(key,value);}}//遍歷鍵值對通過StringBuilder來取出集合里面的鍵值對并且按照要求得出結果字符串StringBuilder sb = new StringBuilder();//遍歷集合使用鍵找值的方法Set<Character> keySet = map.keySet();for (Character key: keySet){Integer value = map.get(key);sb.append(key).append("(").append(value).append(")");}String s = sb.toString();System.out.println(s);} }

Collections的簡介和應用

此類僅包含對集合進行操作或返回集合的靜態方法。 它包含對集合進行操作的多態算法,“包裝器”,它返回由指定集合支持的新集合,以及其他一些可能性和結束。

Collections常用三種方法:

//static <T extends Comparable<? super T>>//void sort(List<T> list) 根據其元素的natural ordering ,將指定列表按升序排序。Collections.sort(list);//static void reverse(List<?> list) 反轉指定列表中元素的順序。Collections.reverse(list);//static void shuffle(List<?> list) 使用默認的隨機源隨機置換指定的列表。 (和洗牌一樣的操作)Collections.shuffle(list);

使用案例:
模擬斗地主:

主要使用了Collections的shuffle()方法,完成洗牌動作,把牌盒,每一個玩家的牌都看是一個ArrayList 集合,直接集合里面添加元素就完成了發牌動作;思路和代碼中給出了詳細的注釋,可以試著打一遍哦

import java.util.ArrayList; import java.util.Collections;public class CollectionsDemo {public static void main(String[] args) {//創建一個集合來裝牌ArrayList<String> array = new ArrayList<String>();/*牌的顏色一共有4種????牌的大小一共是13中2,3,4,5,6,7,8,9,10,J,Q,K,A大王小王*///創建兩個字符串數組把牌色和大小對應起來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("小王");//調用Collections的shuffle方法將牌打亂Collections.shuffle(array);//創建四個集合,三個集合代表三個玩家,剩下一個集合標底牌ArrayList<String> array1 = new ArrayList<String>();ArrayList<String> array2 = new ArrayList<String>();ArrayList<String> array3 = new ArrayList<String>();ArrayList<String> array4 = new ArrayList<String>();//開始發牌//如果當前第i張牌減去(牌的數量減去3)大于等于零說明剩下的三張是底牌//i%3表示順序發牌for (int i = 0; i < array.size(); i++) {String s = array.get(i);if (i - (array.size() - 3) >= 0) {array4.add(s);} else if (i % 3 == 0) {array1.add(s);} else if (i % 3 == 1) {array2.add(s);} else {array3.add(s);}}//遍歷四個集合查看發牌lookpoke("劉德華",array1);lookpoke("郭富城",array2);lookpoke("黎明",array3);lookpoke("底牌",array4);/*System.out.println(array1);System.out.println(array2);System.out.println(array3);System.out.println(array4);*/}public static void lookpoke(String name,ArrayList<String> arrayList){System.out.print(name+"的牌是:");for (String poker : arrayList){System.out.print(poker+",");}System.out.println();} }

總結

以上是生活随笔為你收集整理的Java学习打卡第八天——[Collection终结之HashMap,Collections的简介和使用]的全部內容,希望文章能夠幫你解決所遇到的問題。

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