Map和項目

1Map

1.1Map概述

Map 地圖映射關(guān)系

? ? ORM 對象關(guān)系映射? 類對象 <==> 數(shù)據(jù)庫數(shù)據(jù)

雙邊隊列

? ? 數(shù)據(jù)存儲形式都是(Key)值(Value)對形式

Map雙邊隊列中對于數(shù)據(jù)存儲類型

? ? 有限制 存儲數(shù)據(jù)類型在創(chuàng)建Map雙邊隊列時進(jìn)行約束,保證數(shù)據(jù)類型一致化

? ? 也沒限制 Map可以滿足任意數(shù)據(jù)類型

Map使用兩泛型

? ? ? ? Map<K,V>

1.2Map整體結(jié)構(gòu)和常用API

interface Map<K,V>

---| class HashMap<K , V>

? ? 底層存儲數(shù)據(jù)結(jié)構(gòu)采用的方式是哈希表方式惧眠。存儲數(shù)據(jù)時根據(jù)當(dāng)前存儲Key作為計算機存儲位置籽懦,和查詢元素的唯一表示。

-------| class TreeMap<K,V>

? ? 底層存儲數(shù)據(jù)結(jié)構(gòu)是一個二叉樹結(jié)構(gòu)氛魁,要求存儲的鍵值對暮顺,Key必須有對應(yīng)排序方式。這里需要Comparable<T>

? ? 常用

? ? API? Aplication Program Interface

? ? SDK Softer Development Kits

put (K key秀存, V value)捶码;

添加符合Map要求的鍵值對存入到雙邊隊列中

put All(Map<? extends K, ? extends V> map)

添加另一個Map到當(dāng)前Map中,要求當(dāng)前Map本身對應(yīng)的K或链,或者其子類

V是當(dāng)前Map本身對應(yīng)V赐写,或者其子類

remove(Object key)惑朦;

刪除對應(yīng)key鍵值對

put(K key, V value)途事;

使用value修改已經(jīng)存在的key對應(yīng)的值

int size();

Map雙邊隊列個數(shù)

boolean isEmpty();

判斷當(dāng)前Map雙邊隊列中是否為空

boolean containKey(Object key);

判斷指定Key是否存在

boolean containValue(Object value);

判斷指定Value是否存在

Set<K> keySet()掀淘;

返回Map雙邊隊列中所有Key對應(yīng)Set集合

Collection<V> valuses();

返回Map雙邊隊列中所有valuse對應(yīng)Collection集合


【補充】

setId

setName

以上方法是Setter方法油昂,設(shè)置類對象屬性的方法

keySet

返回值類型是一個Set集合革娄,具有數(shù)據(jù)存儲唯一性

valuses

以s結(jié)尾的方法,表示復(fù)數(shù)冕碟,一般返回值類型都是Collection拦惋,List或者數(shù)組

總結(jié)

set開頭 設(shè)置方法

get開頭 獲取方法

Set結(jié)尾,返回值是Set集合安寺,數(shù)據(jù)唯一

s結(jié)尾厕妖,返回值類是Collection,List或者數(shù)組

1.3HashMap方法演示

package com.test;

import java.util.Collection;

import java.util.HashMap;

import java.util.Set;

public class Demo1 {

public static void main(String[] args) {

/*

* Map是一接口挑庶,沒有自己的類對象言秸,這里是Map接口實現(xiàn)類的HashMap做方法演示

*/

HashMap<String, Integer> map1 = new HashMap<String, Integer>();

map1.put("Dior 999", 280);

map1.put("YSL", 220);

map1.put("Mac", 180);

map1.put("阿尼瑪 405", 230);

System.out.println(map1);

HashMap<String, Integer> map2 = new HashMap<String, Integer>();

map2.put("TF", 179);

map2.put("雅詩蘭黛", 229);

map1.putAll(map2);

System.out.println(map1);

map1.put("阿尼瑪 405", 280);

System.out.println(map1);

System.out.println(map1.size());

System.out.println(map1.isEmpty());

System.out.println(map1.containsKey("YSL"));

System.out.println(map1.containsValue("楊樹林"));

System.out.println(map1.containsValue(179));

System.out.println(map1.containsValue(100));

Set<String> KeySet = map1.keySet();

System.out.println(KeySet);

Collection<Integer> values = map1.values();

System.out.println(values);

}

}

1.4TreeMap演示

package com.test;

import java.util.TreeMap;

public class Demo2 {

public static void main(String[] args) {

TreeMap<Person, Integer> treeMap = new TreeMap<Person, Integer>(new MyComparator());

Person person = new Person(1, "騷磊" , 16);

treeMap.put(person, 100);

treeMap.put(new Person(2, "騷杰", 26), 100);

treeMap.put(new Person(3, "寶哥", 16), 200);

treeMap.put(new Person(2, "茂林", 56), 100);

treeMap.put(new Person(2, "康爺", 76), 100);

treeMap.put(new Person(2, "大熊", 26), 200);

System.out.println(treeMap);

System.out.println(treeMap.size());

treeMap.put(new Person(6, "大熊", 96) , 200);

System.out.println(treeMap);

System.out.println(treeMap.size());

person.setAge(96);

System.out.println(treeMap);

}

}

package com.test;

public class Person {

private int id;

private String name;

private int age;

public Person() {}

public Person(int id, String name, int age) {

this.id = id;

this.name = name;

this.age = age;

}

@Override

public String toString() {

return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

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;

}

}

package com.test;

import java.util.Comparator;

public class MyComparator implements Comparator<Person> {

@Override

public int compare(Person o1, Person o2) {

return o1.getAge() - o2.getAge();

}

}

1.5關(guān)于Map鍵值對整體思想

Map雙邊隊列中把Key和Value進(jìn)行一個封裝操作,完全按照一個數(shù)據(jù)類型來處理

class Entry<K, V> {

K k;

V v;

.....

}

Map雙邊隊列中提供了操作Entry的方法

? ? Set<Map.Entry<K, V>>entrySet();

返回值類型是Entry鍵值對形式數(shù)據(jù)的Set集合

Set<Map.Entry<K,V>>

Map.Entry<K,V>Map接口的內(nèi)部接口Entry迎捺,使用的泛型 K举畸,V對應(yīng)Map

創(chuàng)建過程中約束的K,V

因為返回值是Set集合,集合中帶有泛型 Set<Map 接口中的內(nèi)部接口Entry>

Entry對應(yīng)的API

K getKey()凳枝;

V getValue()抄沮;

V setValue(V? value );

1.6小總結(jié)

1Map很重要岖瑰,尤其是HashMap叛买,鍵值對操作在后期開發(fā)中非常常見

數(shù)據(jù)庫,Session Cookie 數(shù)據(jù)傳遞 Json XML..

2比較器接口一定要學(xué)會使用L6B收酢!

Comparator 【重點】自由度非常高露戒,滿足各種條件D牙瘛!玫锋!

Comparator

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市讼呢,隨后出現(xiàn)的幾起案子撩鹿,更是在濱河造成了極大的恐慌,老刑警劉巖悦屏,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件节沦,死亡現(xiàn)場離奇詭異键思,居然都是意外死亡,警方通過查閱死者的電腦和手機甫贯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進(jìn)店門吼鳞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叫搁,你說我怎么就攤上這事赔桌。” “怎么了渴逻?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵疾党,是天一觀的道長。 經(jīng)常有香客問我惨奕,道長雪位,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任梨撞,我火速辦了婚禮雹洗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘卧波。我一直安慰自己时肿,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布幽勒。 她就那樣靜靜地躺著嗜侮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪啥容。 梳的紋絲不亂的頭發(fā)上锈颗,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天,我揣著相機與錄音咪惠,去河邊找鬼击吱。 笑死,一個胖子當(dāng)著我的面吹牛遥昧,可吹牛的內(nèi)容都是我干的覆醇。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼炭臭,長吁一口氣:“原來是場噩夢啊……” “哼永脓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鞋仍,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤常摧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體落午,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡谎懦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了溃斋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片界拦。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖梗劫,靈堂內(nèi)的尸體忽然破棺而出享甸,到底是詐尸還是另有隱情,我是刑警寧澤在跳,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布枪萄,位于F島的核電站,受9級特大地震影響猫妙,放射性物質(zhì)發(fā)生泄漏瓷翻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一割坠、第九天 我趴在偏房一處隱蔽的房頂上張望齐帚。 院中可真熱鬧,春花似錦彼哼、人聲如沸对妄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剪菱。三九已至,卻和暖如春拴签,著一層夾襖步出監(jiān)牢的瞬間孝常,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工蚓哩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留构灸,地道東北人。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓岸梨,卻偏偏與公主長得像喜颁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子曹阔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,566評論 2 349