搜尋
首頁Javajava教程什麼是Map集合? Map集合的特點

什麼是Map集合? Map集合的特點

Jun 20, 2017 am 10:15 AM
collections參數可變集合

Map集合的特點:
1.是一個雙列集合,賦值的時候必須同時給key和value賦值
2.是一個無序的集合(存入和取出元素的順序可能不一致)
3.key值不能重複,value可以重複
4.一個key只能對應一個vlaue
5.定義集合時,資料型別key和value可以使用相同的資料型別,也可以使用不同的資料型別

Map集合的特性
java.util.Map介面:集合,是雙列集合

Map集合遍歷的第一種方式
Map集合遍歷的第一種方式:透過健查找值的方式
Map集合中有一個方法:keySet
Set keySet()  傳回此映射中包含的鍵的Set 視圖。 把Map集合中的子存到一個Set集合中
遍歷Map集合的步驟:
1.定義一個Map集合,往集合中加入元素
2.呼叫Map集合中的方法keySet,把Map集合中的健存到一個Set集合中
3.遍歷Set集合,取得Map集合所有的健
4.透過取得到的健,使用Map集合的方法get查找值

 1 public static void main(String[] args) { 2         //1.定义一个Map集合,往集合中添加元素 3         Map<string> map = new HashMap<string>(); 4         map.put("a", "1"); 5         map.put("b", "2"); 6         map.put("c", "3"); 7         map.put("d", "4"); 8         //2.调用Map集合中的方法keySet,把Map集合中的健存储到一个Set集合中 9         Set<string> set = map.keySet();10         //System.out.println(set.getClass());11         //3.遍历Set集合,获取Map集合所有的健12         //使用迭代器遍历13         Iterator<string> it = set.iterator();14         while(it.hasNext()){15             String key = it.next();16             //4.通过获取到的健,使用Map集合的方法get查找值17             String value = map.get(key);18             System.out.println(key+"..."+value);19         }20         System.out.println("----------------");21         //使用增强for遍历22         for(String key : set){23             //4.通过获取到的健,使用Map集合的方法get查找值24             String value = map.get(key);25             System.out.println(key+"..."+value);26         }27         System.out.println("----------------");28         //使用增强for遍历29         for(String key : map.keySet()){30             //4.通过获取到的健,使用Map集合的方法get查找值31             String value = map.get(key);32             System.out.println(key+"..."+value);33         }34     }</string></string></string></string>

Map集合遍歷的第二種方式
# Map集合遍歷的第二種方式:遍歷鍵值對的方式
Map集合中有一個方法:entrySet
Set> entrySet() 傳回此映射中包含的映射關係的Set 視圖。
遍歷步驟:
1.定義一個Map集合,往集合中加入元素
2.呼叫Map集合中的方法entrySet,把Map集合中的每一個映射關係(結婚證書)放入到Set集合中
3.遍歷Set集合,取得每一個映射關係Entry
4.使用Entry中的方法getKey和getValue取得健和值

 1 public static void main(String[] args) { 2         //1.定义一个Map集合,往集合中添加元素 3         Map<string> map = new HashMap<string>(); 4         map.put("a", "1"); 5         map.put("b", "2"); 6         map.put("c", "3"); 7         map.put("d", "4"); 8         /* 9          * 2.调用Map集合中的方法entrySet,把Map集合中的每一个映射关系(结婚证)放入到Set集合中10          * 成员内部类的访问方式:外部类.内部类(Map.Entry)11          */12         Set<map.entry>> set = map.entrySet();13         //3.遍历Set集合,获取每一个映射关系Entry<k>14         //使用迭代器遍历Set集合15         Iterator<map.entry>> it = set.iterator();16         while(it.hasNext()){17             Map.Entry<string> entry = it.next();18             //4.使用Entry<k>中的方法getKey和getValue获取健和值19             String key = entry.getKey();20             String value = entry.getValue();21             System.out.println(key+"..."+value);22         }23         System.out.println("---------------------");24         //使用增强for遍历Set集合25         for(Map.Entry<string> entry:set){26             //4.使用Entry<k>中的方法getKey和getValue获取健和值27             String key = entry.getKey();28             String value = entry.getValue();29             System.out.println(key+"..."+value);30         }31         System.out.println("---------------------");32         //使用增强for遍历Set集合33         for(Map.Entry<string> entry:map.entrySet()){34             //4.使用Entry<k>中的方法getKey和getValue获取健和值35             String key = entry.getKey();36             String value = entry.getValue();37             System.out.println(key+"..."+value);38         }39     }</k></string></k></string></k></string></map.entry></k></map.entry></string></string>

HashMap儲存自訂類型鍵值
HashMap儲存自訂類型鍵值
自訂類型為Map集合的值
自訂類型為Map集合的健

記住:自訂類型何時重寫hashCode和equals
1.使用HashSet儲存自訂類型
2.使用HashMap集合,健使用自訂類型

Hashtable
Map 的實作類別Hashtable
底層資料結構是雜湊表,特點和hashMap 是一樣的
Hashtable 是執行緒安全的集合,運行速度慢
HashMap 是線程不安全的集合,運行速度快

Hashtable 命運和Vector 是一樣的,從JDK1.2 開始,被更先進的HashMap 取代

HashMap 允許存儲null 值, null 健
hashtable 不允許儲存null 值,null 健

Hashtable 他的孩子,子類Properties 依然活躍在開發舞台

LinkedHashMap集合特徵
 java.util.LinkedHashMap extends HashMap implements Map
 LinkedHashMap集合特點:
  1.哈希表+鍊錶:雙向鍊錶,可以保證迭代順序
  2.key不能重複


Collections
java.util.Collections:操作Collection集合的工具類別
工具類別裡邊的方法都是靜態方法,透過類別名稱可以直接使用

# public static void sort(List list) // 集合元素排序
public static void shuffle(List> list) //  集合元素儲存位置打亂

##可變可變參數

  JDK1.5之後出現的新特性
  使用前提:方法參數的資料型別確定,但是參數的個數不確定


使用格式:修飾符傳回值型別 方法名(資料型態...變數名){
  }
  ...代表方法可以接收同種資料型態的多個參數
  可變參數的底層可視為是一個陣列


可變參數的注意事項:   1.一個方法的參數,只能使用一個可變參數
  2.如果方法的參數有多個,可變參數必須寫在參數列表的末尾

 1 public static int add(int...arr){ 2         System.out.println(arr);//[I@104c575 3         System.out.println(arr.length); 4         int sum = 0; 5         //遍历可变参数-->遍历数组 6         for (int i : arr) { 7             sum +=i; 8         } 9         10         return sum;11     }

靜態導入  JDK1.5新功能,靜態導入
 減少開發的程式碼量
 標準寫法,導入套件的時候才能使用
 import static java.lang.System.out; 最結束,必須是一個靜態成員

package cn.itcast.demo05;

import java.util.ArrayList;

import java.util.Collections;
import java.util.HashMap;

  1 /*  2  * 带排序功能的斗地主案例:  3  *     1.准备牌  4  *     2.洗牌  5  *     3.发牌  6  *     4.排序  7  *     5.看牌  8  */  9 public class DouDiZhu { 10     public static void main(String[] args) { 11         //1.准备牌 12         //创建存储序号和拍面值的Map集合 13         HashMap<integer> poker = new HashMap<integer>(); 14         //创建存储序号的List集合 15         ArrayList<integer> pokerNumber = new ArrayList<integer>(); 16         //创建序号的数组 17         String[] numbers = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"}; 18         //创建花色数组 19         String[] colors = {"?","?","?","?"}; 20         //先把大王和小王存储到集合中 21         int index = 0; 22         poker.put(index, "大王"); 23         pokerNumber.add(index); 24         index++; 25         poker.put(index, "小王"); 26         pokerNumber.add(index); 27         index++; 28          29         //使用循环嵌套遍历两个数组,组成52张牌 30         for (String number : numbers) { 31             for (String color : colors) { 32                 //把组合包的牌添加到集合中 33                 poker.put(index, color+number); 34                 pokerNumber.add(index); 35                 index++; 36             } 37         } 38         //System.out.println(poker); 39         //System.out.println(pokerNumber); 40          41         //2.洗牌:洗的是牌的序号 42         //使用Collections中的方法shuffle 43         Collections.shuffle(pokerNumber); 44         //System.out.println(pokerNumber); 45          46         /* 47          * 3.发牌:发的也是牌的序号 48          *     a.定义4个集合存储3个玩家和1个底牌 49          *     b.遍历存储序号的List集合 50          *     c.使用list集合的索引%进行判断进行发牌 51          *     注意:先判断底牌 52          */ 53         //a.定义4个集合存储3个玩家和1个底牌 54         ArrayList<integer> player01 = new ArrayList<integer>(); 55         ArrayList<integer> player02 = new ArrayList<integer>(); 56         ArrayList<integer> player03 = new ArrayList<integer>(); 57         ArrayList<integer> diPai = new ArrayList<integer>(); 58          59         //b.遍历存储序号的List集合 60         for(int i=0; i<pokernumber.size>=51){ 65                 //存储底牌 66                 diPai.add(number); 67             }else if(i%3==0){ 68                 //给玩家1发牌 69                 player01.add(number); 70             }else if(i%3==1){ 71                 //给玩家2发牌 72                 player02.add(number); 73             }else if(i%3==2){ 74                 //给玩家3发牌 75                 player03.add(number); 76             } 77         } 78         /*System.out.println(player01); 79         System.out.println(player02); 80         System.out.println(player03); 81         System.out.println(diPai);*/ 82          83         //4.排序 84         //使用Collections中的方法sort 85         Collections.sort(player01); 86         Collections.sort(player02); 87         Collections.sort(player03); 88         Collections.sort(diPai); 89          90         /*System.out.println(player01); 91         System.out.println(player02); 92         System.out.println(player03); 93         System.out.println(diPai);*/ 94          95         /* 96          * 5.看牌 97          */ 98         //调用看牌方法 99         lookPoker("刘德华",player01, poker);100         lookPoker("周润发",player02, poker);101         lookPoker("周星驰",player03, poker);102         lookPoker("底牌",diPai, poker);103     }104     105     /*106      * 定义一个看牌的方法107      * 返回值类型:void108      * 方法名:lookPoker109      * 参数列表:玩家和底牌的集合,存储排的Map集合110      * 使用查表法看牌:111      *     遍历List集合,获取Map集合key,使用key去Map集合中查找value112      */113     public static void lookPoker(String name,ArrayList<integer> list,HashMap<integer> map){114         System.out.print(name+":");115         //遍历List集合,获取Map集合key116         for (Integer key : list) {117             //使用key去Map集合中查找value118             String value = map.get(key);119             System.out.print(value+" ");120         }121         System.out.println();//换行122     }123 }</integer></integer></pokernumber.size></integer></integer></integer></integer></integer></integer></integer></integer></integer></integer></integer></integer>
 

#

以上是什麼是Map集合? Map集合的特點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?Mar 17, 2025 pm 05:46 PM

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?Mar 17, 2025 pm 05:45 PM

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?Mar 17, 2025 pm 05:44 PM

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?Mar 17, 2025 pm 05:43 PM

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Mar 17, 2025 pm 05:35 PM

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。