Map集合:该集合存储键值对,一对一对往里存,而且要保证键的唯一性。
1.添加 put (Key k,Value val);2.删除 clear(); remove(Object key);
3.判断 boolear containsKey(Object key);boolear containsValue(Object value);
4.获取 get(Object key); size();values(); entrySet();keySet();
Map 接口
|--Hashtable 底层是哈希表数据结构,不可以存入null键null值,该集合是同步的,线程安全的。|--HashMap 底层是哈希表数据结构,允许使用null键和null值,该集合是不同步,线程不安全。效率高
|--TreeMap 底层是二叉树据结构,线程不同步,可以用于给map集合中的键进行排序。
可以发现Map和Set很像,其实Set的底层使用了Map集合
注意:
put方法,添加元素时,添加相同的键,那么后添加得值会覆盖原有的键对应的值,并且put方法会返回被覆盖的值。map集合的两种取值方式;
1.keySet 将map中所有的键存入到Set集合中(Set set = map.keySet();),因为Set具备迭代器。所以可以用迭代方式取出所有的键,再根据get方法获取每一个键对应的值 。Set<String> keyset = map.keySet();
//有了Set集合。就可以获取其迭代器
Iterator<String> it = keyset.iterator();
while(it.hasNext()){
String key = it.next();
//有了键可以通过map集合的get方法取得其对应的值;
String value = map.get(key);
System.out.println("key:"+key+"---"+"value::"+value);
}
Map集合的取出原理:将map集合转成Set集合,然后利用Set集合的迭代器取出相应键对应map中的值。
2.entrySet。
Set<Map.Entry<k,v>>entrySet;将map集合中的映射关系存入到Set集合中。而这个关系的类型就是:Map.Entry(Map.Entry是一个对象,就像Student对象一样)。Map.Entry 其实Entry也是也接口,他是Map接口中的一个内部接口。
interface Map
{
public static interface Entry
{
public abstract Object getKey();
public abstract Object getValue();
}
}
HashMap 实现了这两个接口
class HashMap implements Map
{
class Hash implements Map.Entry
{
public Object getkey(){ };
public Object getValue(){ };
}
}