map在Java集合_java集合之Map
Map
Map用于保存具有映射關系的數據。
Map中key不允許重復,value可以重復,key和value之間存在單向一對一關系
HashMap和Hashtable區別
1 Hashtable線程安全、HashMap線程不安全,所以HashMap性能高一點
2 Hashtable不允許用null做key和value,但hashMap可以。
為了成功在HashMap和Hashtable中存儲、獲取對象,用做key的對象必須實現hashCode和equals方法。
HashMap和Hashtable不能保證key-value對的順序,他們判斷兩個key相等的標準是equals返回true,hashCode相等。
HashMap和Hashtable判斷兩個value相等的標準是equals返回true
與HashSet一樣,重寫key對象類的equals和hashCode,應該使他們保持一致,且盡量使用不可變對象作為key。否則也會出現和HashSet類似的混亂情形。
LinkedHashMap與HashMap的關系和LinkedHashSet與HashSet的關系類似。
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類似,使用了紅黑樹對key進行排序,從而保證了TreeMap中所有的key-value對處于有序狀態。
TreeMap對key的要求與TreeSet對元素的要求基本一致
WeakHashMap與HashMap用法相似,區別在于HashMap的Key保留對實際對象的強引用,而WeakHashMap僅保持弱引用,這意味著,該對象所有key所引用的對象如果沒有被其他強引用變量引用,則可能被垃圾回收。
IdentityHashMap葉與HashMap用法相似,只是該類的key僅當key1 == key2是才認為是相等的。
EnumMap實現類
EnumMap是與枚舉類一起使用的Map,所有key值必須是單個枚舉類的枚舉值
EnumMap內部以數組形式保存,非常緊湊、高效
根據key的自然順序(枚舉類中的定義順序)來維護key-value對的次序
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, "春暖花開");
System.out.println(em);
}
}
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的map在Java集合_java集合之Map的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos7时间同步_centos 8
- 下一篇: java美元兑换,(Java实现) 美元