java中Map接口

Map接口的概述

  • Map接口的概述
    1肌似、將鍵映射到值的對象费就;
    2、一個(gè)映射不能包含重復(fù)的鍵川队;
    3力细、每個(gè)鍵最多只能映射到一個(gè)值;
  • Map接口和Collection接口的不同
    1固额、Map是雙列的眠蚂,Collection是單列的;
    2斗躏、Map是鍵唯一逝慧,Collection的子體系Set是唯一的;
    3、Collection集合的數(shù)據(jù)結(jié)構(gòu)是針對元素有效笛臣;

Map集合的功能概述

1云稚、添加功能:
V put(K key,V value):添加元素沈堡;

//創(chuàng)建集合對象
        Map<Integer,String> map=new HashMap<Integer, String>();
        //添加元素
        map.put(1,"hello");
        map.put(2,"world");
        System.out.println(map);

成功存儲兩個(gè)鍵值對静陈;但是再看下面這個(gè):

//添加元素
      map.put(1,"hello");
      map.put(1,"world");
      System.out.println(map);


說明了,當(dāng)鍵值相同時(shí)踱蛀,前面的值將會被修改窿给,所以這個(gè)方法也可以修改指定位置的元素;
2率拒、刪除功能:
void clear:移除所有的鍵值元素崩泡;
V remove(object key):根據(jù)鍵刪除值對元素,并把值返回猬膨;
3角撞、判斷功能:
boolean containsKey(Object key):判斷是否包含指定的鍵;
boolean containsKey(Object value):判斷是否包含指定的值勃痴;
boolean isEmpty:判斷集合是否為空谒所;
4、獲取功能:
V get(object key):根據(jù)鍵獲取值沛申;

//根據(jù)鍵獲取值
        System.out.println("根據(jù)鍵獲取值是:"+map.get(1));

set<K> keySet():獲取集合中所有值得集合劣领;

//獲取集合中所有鍵的集合
        Set<Integer> set=map.keySet();
        for(Integer key:set){
            System.out.println(key);
        }

Collection<V> values():獲取集合中所有值的集合;

//獲取集合中所有值的集合
        Collection<String> conn=map.values();
        for(String values:conn){
            System.out.println(values);
        }

Map集合的遍歷:

package com.manman_01;
/*
 * Map集合的遍歷:
     * 思路:
     * 把所有的鍵集中起來铁材;
     * 遍歷鍵的集合尖淘,獲取得到每一個(gè)鍵
     * 讓鍵去匹配值;
 * 獲取所有的鍵
 * 遍歷鍵的集合著觉,獲取得到每一個(gè)鍵
 * 根據(jù)鍵去找值
 */
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapDemo1 {
    public static void main(String[] args) {
        //創(chuàng)建集合對象
        Map<Integer,String> map=new HashMap<Integer, String>();
        //添加元素
        map.put(1,"hello");
        map.put(2,"world");
        map.put(3, "java");
        //遍歷
        Set<Integer> set=map.keySet();
        //遍歷鍵的集合村生,獲取每一個(gè)鍵
        for(Integer key:set){
            String value=map.get(key);
            System.out.println(key+"-->"+value);
            
        }
        
    }
}

5、
int size():返回集合中的鍵值對的個(gè)數(shù)饼丘;

map.put(1,"hello");
map.put(2,"world");
//System.out.println(map);
//獲取長度
System.out.println("長度是:"+map.size());

Map的子類HashMap

  • HashMap:是基于哈希表的Map接口實(shí)現(xiàn)的趁桃;哈希表的作用是用來保證鍵的唯一性的。
package com.manman_02;

import java.util.HashMap;
import java.util.Set;

public class HashMapDemo {
    public static void main(String[] args) {
        //創(chuàng)建集合對象
        HashMap<Integer, String> hm=new HashMap<Integer, String>();
        //創(chuàng)建元素并添加元素
        hm.put(1, "hello");
        hm.put(2, "world");
        hm.put(3, "java");
        hm.put(3, "android");
        //遍歷
        Set<Integer> set=hm.keySet();
        for(Integer key:set){
            String value=hm.get(key);
            System.out.println(key+"-->"+value);
        }
    }
}

  • 練習(xí)
    1肄鸽、遍歷自定義集合
package com.manman_02;

import java.util.HashMap;
import java.util.Set;

public class HashMapDemo2 {
    public static void main(String[] args) {
        //創(chuàng)建集合對象
        HashMap<String, Student> hm=new HashMap<String, Student>();
        //創(chuàng)建學(xué)生對象
        Student student1=new Student("張三",20);
        Student student2=new Student("李四",21);
        Student student3=new Student("王五",22);
        Student student4=new Student("劉柳",23);
        //添加元素
        hm.put("123",student1);
        hm.put("124",student2);
        hm.put("125",student3);
        hm.put("126",student4);
        //遍歷
        Set<String> set=hm.keySet();
        for(String key:set){
            Student student=hm.get(key);
            System.out.println(student.getName()+"-->"+student.getAge());
        }
    }
}


2卫病、

package com.manman_02;

import java.util.HashMap;
import java.util.Set;

/*
 * HashMap<Student,String>
 * 要求是:
 * 如果兩個(gè)對象的成員變量值都相同,則為同一個(gè)對象
 */
public class HashMapDemo3 {
    public static void main(String[] args) {
        //創(chuàng)建集合對象
        HashMap<Student, String> hm=new HashMap<Student, String>();
        //創(chuàng)建學(xué)生對象
        Student student1=new Student("張三",20);
        Student student2=new Student("李四",21);
        Student student3=new Student("王五",22);
        Student student4=new Student("劉柳",23);
        //添加元素
        hm.put(student1,"第一");
        hm.put(student2,"第二");
        hm.put(student3,"第三");
        hm.put(student4,"第四");
        //遍歷
        Set<Student> set=hm.keySet();
        for(Student key:set){
            String value=hm.get(key);
            System.out.println(key.getAge()+"-->"+key.getName()+"-->"+value);
        }
    }
}

LinkedHashMap類的概述

  • Map接口的哈希表和鏈接列表實(shí)現(xiàn)典徘,具有可預(yù)知的迭代順序蟀苛。
package com.manman_02;

import java.util.LinkedHashMap;
import java.util.Set;

public class LinkedHashMapDemo {
    public static void main(String[] args) {
        //創(chuàng)建集合對象
        LinkedHashMap<String, String> hm=new LinkedHashMap<String, String>();
        //創(chuàng)建并添加元素
        hm.put("1", "張三");
        hm.put("2", "李四");
        hm.put("3", "王五");
                hm.put("3", "麗麗");
        //遍歷
        Set<String> set=hm.keySet();
        for(String key:set){
            String value=hm.get(key);
            System.out.println(key+"-->"+value);
        }
    }
}

TreeMap類的概述

  • 基于紅黑樹的Map接口的實(shí)現(xiàn)
package com.manman_02;

import java.util.Set;
import java.util.TreeMap;

public class TreeMapDemo {
    public static void main(String[] args) {
        //創(chuàng)建集合對象
        TreeMap<String, String> hm=new TreeMap<String, String>();
        //創(chuàng)建并添加元素
                hm.put("1", "張三");
                hm.put("2", "李四");
                hm.put("4", "王五");
                hm.put("4", "麗麗");
                //遍歷
                Set<String> set=hm.keySet();
                for(String key:set){
                    String value=hm.get(key);
                    System.out.println(key+"-->"+value);
                }
            }
        }

  • 練習(xí)
    1、
package com.manman_02;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;

/*
 * 要求是:假設(shè)HashMap集合的元素是ArrayList烂斋。有三個(gè)屹逛。
 * 每一個(gè)ArrayList集合的值是字符串
 */
public class HashMapDemo5 {
    public static void main(String[] args) {
        //創(chuàng)建集合對象
        HashMap<String, ArrayList<String>> hm=new HashMap<String , ArrayList<String>>();
        //添加元素
            //添加元素集合
            ArrayList<String> arrayList1=new ArrayList<String>();
            arrayList1.add("盧布");
            ArrayList<String> arrayList2=new ArrayList<String>();
            arrayList2.add("張良");
            ArrayList<String> arrayList3=new ArrayList<String>();
            arrayList3.add("鐘馗");
        
        hm.put("第一", arrayList1);
        hm.put("第二", arrayList2);
        hm.put("第三", arrayList3);
        
        //遍歷
        Set<String> set=hm.keySet();
        for(String key:set){
            ArrayList<String> arrayList=hm.get(key);
            for(String s:arrayList){
                System.out.println(key+s);
            }
        }
    }
}


2础废、

package com.manman_02;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;

/*
 * ArrayList集合嵌套HashMap集合并遍歷
 * 假設(shè)ArrayList集合的元素是HashMap。有三個(gè)罕模。
 * 每個(gè)HashMap集合的建和值都是字符串
 */
public class HashMapDemo6 {
    public static void main(String[] args) {
        //創(chuàng)建集合對象
        ArrayList<HashMap<String, String>> arrayhash=new ArrayList<HashMap<String,String>>();
        //添加元素
            //創(chuàng)建HashMap评腺,并添加元素
            HashMap<String, String> hm1=new HashMap<String,String>();
            hm1.put("文章", "馬伊琍");
            HashMap<String, String> hm2=new HashMap<String,String>();
            hm2.put("鄧超", "孫儷");
            HashMap<String, String> hm3=new HashMap<String,String>();
            hm3.put("黃磊", "孫莉");
        arrayhash.add(hm1);
        arrayhash.add(hm2);
        arrayhash.add(hm3);
        //遍歷
        for(HashMap<String, String> hashMap:arrayhash){
            Set<String> set=hashMap.keySet();
            for(String key:set){
                String value=hashMap.get(key);
                System.out.println(key+"-->"+value);
            }
            
        }
        
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市淑掌,隨后出現(xiàn)的幾起案子蒿讥,更是在濱河造成了極大的恐慌,老刑警劉巖抛腕,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芋绸,死亡現(xiàn)場離奇詭異,居然都是意外死亡担敌,警方通過查閱死者的電腦和手機(jī)摔敛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來全封,“玉大人马昙,你說我怎么就攤上這事∩层玻” “怎么了行楞?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長土匀。 經(jīng)常有香客問我子房,道長,這世上最難降的妖魔是什么就轧? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任证杭,我火速辦了婚禮,結(jié)果婚禮上钓丰,老公的妹妹穿的比我還像新娘躯砰。我一直安慰自己每币,他們只是感情好携丁,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著兰怠,像睡著了一般梦鉴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上揭保,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天肥橙,我揣著相機(jī)與錄音,去河邊找鬼秸侣。 笑死存筏,一個(gè)胖子當(dāng)著我的面吹牛宠互,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播椭坚,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼予跌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了善茎?” 一聲冷哼從身側(cè)響起券册,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎垂涯,沒想到半個(gè)月后烁焙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡耕赘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年骄蝇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片操骡。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡乞榨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出当娱,到底是詐尸還是另有隱情吃既,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布跨细,位于F島的核電站鹦倚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏冀惭。R本人自食惡果不足惜震叙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望散休。 院中可真熱鬧媒楼,春花似錦、人聲如沸戚丸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽限府。三九已至夺颤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胁勺,已是汗流浹背世澜。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留署穗,地道東北人寥裂。 一個(gè)月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓嵌洼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親封恰。 傳聞我的和親對象是個(gè)殘疾皇子咱台,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容