map在Java集合_java集合之Map
Map
Map用于保存具有映射關(guān)系的數(shù)據(jù)。
Map中key不允許重復(fù),value可以重復(fù),key和value之間存在單向一對(duì)一關(guān)系
HashMap和Hashtable區(qū)別
1 Hashtable線程安全、HashMap線程不安全,所以HashMap性能高一點(diǎn)
2 Hashtable不允許用null做key和value,但hashMap可以。
為了成功在HashMap和Hashtable中存儲(chǔ)、獲取對(duì)象,用做key的對(duì)象必須實(shí)現(xiàn)hashCode和equals方法。
HashMap和Hashtable不能保證key-value對(duì)的順序,他們判斷兩個(gè)key相等的標(biāo)準(zhǔn)是equals返回true,hashCode相等。
HashMap和Hashtable判斷兩個(gè)value相等的標(biāo)準(zhǔn)是equals返回true
與HashSet一樣,重寫key對(duì)象類的equals和hashCode,應(yīng)該使他們保持一致,且盡量使用不可變對(duì)象作為key。否則也會(huì)出現(xiàn)和HashSet類似的混亂情形。
LinkedHashMap與HashMap的關(guān)系和LinkedHashSet與HashSet的關(guān)系類似。
properties類是Hashtable的子類,它key和value只能是String類型
使用示例:
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
public class TestPropertise {
/**
* @param args
* @throws IOException
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException, IOException {
// TODO Auto-generated method stub
Properties pro = new Properties();
//向properties中添加屬性
pro.setProperty("username", "wildox");
pro.setProperty("password", "zmz");
//將其保存到a.ini文件中
pro.store(new FileOutputStream("a.ini"), "comment line");
Properties pro2 = new Properties();
pro2.setProperty("gender", "male");
//將a.ini中的屬性名-屬性值加到pro2中
pro2.load(new FileInputStream("a.ini"));
System.out.println(pro2);
}
}
TreeMap和TreeSet類似,使用了紅黑樹(shù)對(duì)key進(jìn)行排序,從而保證了TreeMap中所有的key-value對(duì)處于有序狀態(tài)。
TreeMap對(duì)key的要求與TreeSet對(duì)元素的要求基本一致
WeakHashMap與HashMap用法相似,區(qū)別在于HashMap的Key保留對(duì)實(shí)際對(duì)象的強(qiáng)引用,而WeakHashMap僅保持弱引用,這意味著,該對(duì)象所有key所引用的對(duì)象如果沒(méi)有被其他強(qiáng)引用變量引用,則可能被垃圾回收。
IdentityHashMap葉與HashMap用法相似,只是該類的key僅當(dāng)key1 == key2是才認(rèn)為是相等的。
EnumMap實(shí)現(xiàn)類
EnumMap是與枚舉類一起使用的Map,所有key值必須是單個(gè)枚舉類的枚舉值
EnumMap內(nèi)部以數(shù)組形式保存,非常緊湊、高效
根據(jù)key的自然順序(枚舉類中的定義順序)來(lái)維護(hù)key-value對(duì)的次序
EnumMap不允許null作為key,但允許null作為value
使用示例:
import java.util.EnumMap;
enum Season{
SPRING,SUMMER,FALL,WINTER
}
public class TestEnumMap {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
EnumMap em = new EnumMap(Season.class);
em.put(Season.SUMMER, "夏日炎炎");
em.put(Season.SPRING, "春暖花開(kāi)");
System.out.println(em);
}
}
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的map在Java集合_java集合之Map的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: centos7时间同步_centos 8
- 下一篇: java分数表示_表示Java分数的最佳