Map集合
Map接口的特点:
用于存储任意键值对(Key-Value)键:无序、无下标、不允许重复(唯一)值:无序、无下标、允许重复
Map接口的常用方法
@Test
public void Test(){
Map
<Integer,String> map
=new HashMap<Integer, String>();
map
.put(1,"张三");
map
.put(2,"李四");
map
.put(3,"王五");
map
.get(1);
for (Object key
:map
.keySet() ) {
System
.out
.println(key
+map
.get(key
));
}
Set
<Map
.Entry
<Integer,String>> entries
= map
.entrySet();
for (Map
.Entry
<Integer, String> entry
: entries
) {
System
.out
.println(entry
.getKey()+entry
.getValue());
}
}
keySet()方法和Map.Entry都是返回Set集合; 但是keySet方法只是获取了Map集合中的Key ,想要获取Value还是得从Map中去拿。 Entry则是把整个键值对拿过来封装成Entry对象,可以直接获取Key和Value,所以Map.Entry效率高
HashMap(重点)
HashMap底层结构为哈希表(数组+链表+红黑树),当链表长度大于8且数组长度大于等于64的时候,就会变成红黑树提高查询修改效率,如果链表长度缩小到6以下就会又变成数组链表形式HashMap允许用null作为Key或Value线程不安全,但是运行效率快
HashTable
线程安全,运行效率慢不允许用null作为Key或Value
Properties
是HashTable的子类,要求Key和Value的类型都是String,通常用于配置文件的读取