系列文章目錄
文章目錄
- 系列文章目錄
- 前言
- 一、Map介面的實作類們:
- 二、HashMap和Hashtable 哈希表
- 三、HashMap和LinkedHashMap
- 四、HashMap和TreeMap
- 五、Properties
- 六、所有的map的key不能重復,如何實作不重復?
- 七、、完整代碼
前言
這一節講它的實作類
一、Map介面的實作類們:
1、HashMap
2、Hashtable
3、TreeMap
4、LinkedHashMap
5、Properties
二、HashMap和Hashtable 哈希表
Hashtable:舊版,執行緒安全的,它的key和value不能為null,
HashMap:相對Hashtable它來說新一點,執行緒不安全,它允許key和value為null值,
并且他們排序也稍有不同

關聯記憶:(舊的寫前面)
StringBuffer和StringBuilder
Vector和ArrayList
Hashtable和HashMap
三、HashMap和LinkedHashMap
LinkedHashMap是HashMap的子類,比HashMap多維護了映射關系的添加順序,
HashMap:無序的
LinkedHashMap:可以記錄添加順序,


LinkedHashMap比HashMap要做的事多,效率低,所以建議我們只在需要維護順序時再使用它,
四、HashMap和TreeMap
HashMap:無序的,
TreeMap:按照key排大小順序,
五、Properties
Properties是Hashtable的子類,不允許key和value是null,并且它的key和value的型別都是String,
通常用于存盤配置屬性,
而且為了可讀性更好,還增加了兩個方法:
setProperty(key,value)
String getProperty(key)







注意上面紅框標錯了,是System.getProperties()


六、所有的map的key不能重復,如何實作不重復?
HashMap、Hashtable、LinkedHashMap、Properties:依據key的hashCode和equals方法
TreeMap:依據key的大小,認為大小相等的兩個key就是重復的
如果key重復了,那么后面的value會替換原來的value,
TreeMap要讓key排大小,要么key型別本身實作了java.lang.Comparable介面,要么在創建TreeMap時,指定一個java.util.Comparator介面的實作類物件,


七、、完整代碼
package com.atguigu.test06;
import java.io.IOException;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.Set;
import java.util.TreeMap;
import org.junit.Test;
@SuppressWarnings("all")
public class TestMapImpl {
//key不可重復
@Test
public void test7(){
Map map = new HashMap();
map.put("楊洪強", "翠花");//被覆寫了
map.put("崔志恒", "如花");
map.put("甄玉祿", "鳳姐");
map.put("楊洪強", "冰冰");
Set entrySet = map.entrySet();
for (Object entry : entrySet) {
System.out.println(entry);
}
}
@Test
public void test6() throws IOException{
Properties pro = System.getProperties();//獲取系統屬性配置
Set entrySet = pro.entrySet();
for (Object entry : entrySet) {
System.out.println(entry);
}
}
@Test
public void test5() throws IOException{
Properties pro = new Properties();
pro.load(TestMapImpl.class.getClassLoader().getResourceAsStream("jdbc.properties"));
String user = pro.getProperty("user");
String password = pro.getProperty("password");
System.out.println(user);
System.out.println(password);
}
@Test
public void test4(){
Properties pro = new Properties();
pro.setProperty("user", "chailinyan");
pro.setProperty("pwd", "123456");
String user = pro.getProperty("user");
String password = pro.getProperty("pwd");
System.out.println(user);
System.out.println(password);
}
@Test
public void test3(){
Map map = new TreeMap();//按照key排大小順序,
map.put("yanghongqiang", "翠花");
map.put("cuizhiheng", "如花");
map.put("zhenyulu", "鳳姐");
map.put("suhaibo", "翠花");
Set entrySet = map.entrySet();
for (Object entry : entrySet) {
System.out.println(entry);
}
}
@Test
public void test2(){
Map map = new LinkedHashMap();//按照添加順序
map.put("楊洪強", "翠花");
map.put("崔志恒", "如花");
map.put("甄玉祿", "鳳姐");
map.put("蘇海波", "翠花");
Set entrySet = map.entrySet();
for (Object entry : entrySet) {
System.out.println(entry);
}
}
@Test
public void test1(){
Map map = new HashMap();//完全無序
map.put("楊洪強", "翠花");
map.put("崔志恒", "如花");
map.put("甄玉祿", "鳳姐");
map.put("蘇海波", "翠花");
Set entrySet = map.entrySet();
for (Object entry : entrySet) {
System.out.println(entry);
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/196690.html
標籤:其他
下一篇:本月小結
