在學map的時候,肯定是懵逼的,所以要先進行了解map的定義,然後看看map的應用
接下來我們先了解下map
初識map
----map集合中存放的都是一組組對映關係 ----key=value
----在集合中允許巢狀,key不能重複
(注意:在map中增加不同於其他的集合,其他的集合用add()來增加,而map是用put() )
方法歸類
1、增加
put(k key, v value)
putall(map extends k,? extends v> m)
【put只支援一夫一妻,所以說在後面再增加同乙個key的時候,前面乙個value會被替換】
2、刪除
clear()
remove(object key)
3、判斷
containskey(object key)
containsvalue(object value)
isempty()
4、獲取
get(object key)
size()
values()
entryset()
keyset()
小結:
map
hashtable:底層是雜湊表資料結構,不可以存入null鍵null值,該集合石執行緒同步的,jdk1.0,效率低
hashmap:底層是雜湊表資料結構,允許使用null值和null鍵,該集合是不同步的。將hashtable替代;jdk1.2,效率高
treemap:底層是二叉樹資料結構,執行緒不同步,可以用於給map集合中的鍵進行排序
注意:新增元素時,如果鍵已經在集合中存在,那麼後新增的值會覆蓋原來的值,並且put方法會將原有的值返回
接下來我們來運用map
map的底層就是set集合,set會報錯,所以map也會報錯,所以也要實現comparable介面
應用一:
1、將學生作為鍵,位址作為值進行儲存,名字年齡相同則被認定為乙個人,最後按年齡進行排序輸出
public class treemapdemo }}
class student implements comparable
public void setname(string name)
public int getage()
public void setage(int age)
@override
public string tostring()
public student(string name, int age)
public student() {}
@override
public int hashcode()
@override
public boolean equals(object obj)
@override
public int compareto(student o)
return num;
}}
輸出結果:
student [name=張三, age=18]====北京
student [name=王二, age=22]====廣東
student [name=李四, age=23]====上海
student [name=小紅, age=26]====湖南
需求改變、按姓名進行排序
class stucomp implements comparator
return num;
}}
輸出結果:
student [name=小紅, age=26]====湖南
student [name=張三, age=18]====北京
student [name=李四, age=23]====上海
student [name=王二, age=22]====廣東
應用二:統計字串中字元出現次數
按次數排序
—做題前先要有清晰的思路:
以上的**就是統計字串中字元出現次數。
集合 關於Map
map集合是雙列集合的頂層介面,下面分為treemap和hashmap.那麼我們先來看一下map和collection的區別 1.map是雙列的,而collection是單列的 2.map的鍵都是唯一的,而collection中只有set集合的值是唯一的 3.map集合的資料結構值針對鍵有效,跟值無...
關於集合Map
1.map的資料結構 首先要知道map的乙個資料結構,在jdk1.7以前,map的資料結構是陣列 鍊錶但在jdk1.8,map的資料結構就變成了陣列 鍊錶 紅黑樹,本身是陣列,但由於hash演算法有hash衝突 hash演算法會返回乙個int型的資料,當返回的資料相同時,就叫hash衝突 所以加入了...
關於JAVA中Map集合的遍歷
每次用到map集合的時候都要去查一下怎麼遍歷,最近一次查的,感覺還不錯,收藏吧!第一種 map string,string map new hashmap string,string for entry string,string entry map entryset 第二種 iterator.en...