Map接口(開發(fā)中必用)

1.Map集合

map集合也是存數(shù)據(jù)的

雙邊隊列

Interface Map<K,V>

k: key 鍵

v: value 值

鍵值對

存儲數(shù)據(jù)形式:key=值

{0001=張三, 002=李四, 003=王五}

兩個實現(xiàn)類

HashMap

TreeMap

1.1Map集合中常用的方法

增:
    V put(K key, V vlaue);添加鍵值對的數(shù)據(jù)到map集合中
    void putAll(Map<? extends K> k, Map<? extends V> v);將一個map集合存放到另外一個map集合中
    
刪:
    V remove (K key);通過鍵刪除鍵值對的數(shù)據(jù)称近,返回值是值
改:
    V  put(K key V, value);當鍵值存在的時候撇贺,會將value值覆蓋掉的
查:
    int size(); 查看集合中元素的個數(shù)
    boolean isEmpty();判斷是否為空趟脂,如果不為空返回的是false
    boolean containsKey();是否包含這個鍵
    boolean containsValue();是否包含這個值
    重要的方法:
    V get(K key);通過鍵獲取值
    Set<K>  keySet();獲取map集合中的鍵兵迅,然后存到set集合中抢韭。因為list集合可以重復(fù),而set集合不能重復(fù)恍箭,鍵也不能重復(fù)刻恭,所以存到set集合中
    Collection<V> values(); 獲取map集合中值,存到了Collection集合中
    Set<Map.Entry<K,V>> entrySet()扯夭;將map集合的鍵值對鳍贾,存到了set集合
        Map.Entry這個接口下面也有方法
            getKey:返回鍵值對的鍵
            getValue:返回鍵值對的值
package com.wyx.a_map;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Demo1 {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        //增
        map.put("001", "張三");
        map.put("002", "李四");
        map.put("003", "王五");
        System.out.println(map);
        //{001=張三, 002=李四, 003=王五}

        Map<String, String> map1 = new HashMap<>();
        map1.put("004", "小明");
        map1.put("005", "小張");
        map1.put("006", "小花");
        map.putAll(map1);
        System.out.println(map);
        //{001=張三, 002=李四, 003=王五, 004=小明, 005=小張, 006=小花}

        //刪
        System.out.println("通過鍵刪除值返回的是值,返回值是" + map.remove("006"));//小花

        //改  用put覆蓋
        map.put("004", "李華");
        System.out.println(map);
        //{001=張三, 002=李四, 003=王五, 004=李華, 005=小張}


        //查
        //查詢元素個數(shù)
        System.out.println("查詢元素個數(shù)" + map.size());//5

        //判斷是否為空 空:true
        System.out.println("判斷是否為空" + map.isEmpty());//false

        //查詢是否包含某個鍵
        System.out.println(map.containsKey("001"));//true

        //查詢是否包含某個值
        System.out.println(map.containsValue("李四"));//true

        //通過鍵獲取值
        System.out.println(map.get("001"));

        //獲取map集合中的所有鍵存到集合中交洗,返回值是Set<K>類型的
        Set<String> set1 = map.keySet();
        System.out.println(set1);//[001, 002, 003, 004, 005]

        //獲取map集合中的所有值存到集合中骑科,返回值是Collection<V>類型的
        Collection<String> collection = map.values();
        System.out.println(collection);//[張三, 李四, 王五, 李華, 小張]

        //entrySet():將map集合的鍵值對,存到了set集合
        Set<Map.Entry<String, String>> set2 = map.entrySet();
        System.out.println(set2);
        //[001=張三, 002=李四, 003=王五, 004=李華, 005=小張]
        //取數(shù)據(jù)
        for (Map.Entry<String, String> stringStringEntry : set2) {
            System.out.println(stringStringEntry);
            System.out.println(stringStringEntry.getKey());
            System.out.println(stringStringEntry.getValue());
            System.out.println("---------------------------------------");
        }


    }
}

Map集合中的value存對象

package com.wyx.a_map;

import java.util.*;

class Student {
    String name;
    int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
public class Demo2 {
    public static void main(String[] args) {
        Map<Integer, Student> map = new HashMap<>();
        map.put(1,new Student("張三", 12));
        map.put(2,new Student("李四", 18));
        map.put(3,new Student("王五", 13));
        System.out.println(map);
        //{1=Student{name='張三', age=12}, 2=Student{name='李四', age=18}, 3=Student{name='王五', age=13}}
        Student student1 = map.get(1);
        System.out.println(student1.name);//張三

        Set<Integer> set = map.keySet();
        System.out.println(set);

        Collection<Student> values = map.values();
        System.out.println(values);

        for (Student value : values) {
            System.out.println(value.name);
        }
        //張三
        //李四
        //王五

        Set<Map.Entry<Integer, Student>> entries = map.entrySet();
        for (Map.Entry<Integer, Student> entry : entries) {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        }
        //1
        //Student{name='張三', age=12}
        //2
        //Student{name='李四', age=18}
        //3
        //Student{name='王五', age=13}
        
        //在map集合中存list集合藕筋,list集合中存Student對象
        List<Student> list1 = new ArrayList<>();
        list1.add(new Student("張三", 12));
        list1.add(new Student("李四", 18));
        list1.add(new Student("王五", 13));

        List<Student> list2 = new ArrayList<>();
        list2.add(new Student("小明", 12));
        list2.add(new Student("小張", 18));
        list2.add(new Student("老李", 13));

        Map<Integer, List<Student>> map1 = new HashMap<>();
        map1.put(1, list1);
        map1.put(2, list2);
        Collection<List<Student>> values1 = map1.values();
        for (List<Student> list : values1) {
            for (Student student : list) {
                System.out.println(student.name);
            }
        }
        //張三
        //李四
        //王五
        //小明
        //小張
        //老李


    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末纵散,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子隐圾,更是在濱河造成了極大的恐慌伍掀,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件暇藏,死亡現(xiàn)場離奇詭異蜜笤,居然都是意外死亡,警方通過查閱死者的電腦和手機盐碱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門把兔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瓮顽,你說我怎么就攤上這事县好。” “怎么了暖混?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵缕贡,是天一觀的道長。 經(jīng)常有香客問我拣播,道長晾咪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任贮配,我火速辦了婚禮谍倦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘泪勒。我一直安慰自己昼蛀,他們只是感情好宴猾,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著曹洽,像睡著了一般鳍置。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上送淆,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機與錄音怕轿,去河邊找鬼偷崩。 笑死,一個胖子當著我的面吹牛撞羽,可吹牛的內(nèi)容都是我干的阐斜。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼诀紊,長吁一口氣:“原來是場噩夢啊……” “哼谒出!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起邻奠,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤笤喳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后碌宴,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杀狡,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年贰镣,在試婚紗的時候發(fā)現(xiàn)自己被綠了呜象。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡碑隆,死狀恐怖恭陡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情上煤,我是刑警寧澤休玩,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站楼入,受9級特大地震影響哥捕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嘉熊,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一遥赚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧阐肤,春花似錦凫佛、人聲如沸讲坎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晨炕。三九已至,卻和暖如春毫炉,著一層夾襖步出監(jiān)牢的瞬間瓮栗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工瞄勾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留费奸,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓进陡,卻偏偏與公主長得像愿阐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子趾疚,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

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