HashMap与Hashtable
Hashtable:旧版。线程安全的。它的key和value不能为null。
HashMap:相对Hashtable它来说新一点。线程不安全。它允许key和value为null值。
元素完全无序
@Test
public void test01() {
Map map = new HashMap();//完全无序
map.put("重庆", "火锅");
map.put("兰州", "拉面");
map.put("柳州", "螺蛳粉");
Set entrySet = map.entrySet();
for (Object entry : entrySet) {
System.out.println(entry);
}
/*兰州=拉面
柳州=螺蛳粉
重庆=火锅*/
}
LinkedHashMap
LinkedHashMap是HashMap的子类,比HashMap多维护了映射关系的添加顺序。
元素顺序按照添加顺序
@Test
public void test01() {
Map map = new LinkedHashMap();
map.put("重庆", "火锅");
map.put("兰州", "拉面");
map.put("柳州", "螺蛳粉");
Set entrySet = map.entrySet();
for (Object entry : entrySet) {
System.out.println(entry);
}
/*重庆=火锅
兰州=拉面
柳州=螺蛳粉*/
}
TreeMap
元素按照key排大小顺序。
TreeMap要让key排大小,要么key类型本身实现了java.lang.Comparable接口,要么在创建TreeMap时,指定一个java.util.Comparator接口的实现类对象。
@Test
public void test01() {
Map map = new TreeMap();//完全无序
map.put("A", "火锅");
map.put("B", "拉面");
map.put("C", "螺蛳粉");
Set entrySet = map.entrySet();
for (Object entry : entrySet) {
System.out.println(entry);
}
/*A=火锅
B=拉面
C=螺蛳粉*/
}
Properties
Properties是Hashtable的子类,不允许key和value是null,并且它的key和value的类型都只能是String。通常用于存储配置属性。
而且为了可读性更好,还增加了两个方法:
setProperty(key,value)
String getProperty(key)
@Test
public void test6() throws IOException {
Properties pro = System.getProperties();//获取系统属性配置
Set entrySet = pro.entrySet();
for (Object entry : entrySet) {
System.out.println(entry);
}
}