一:特点
1.集合中是键值对的关系,且key是唯一的,不能重复,value可以重复
二:常见子类
1.Hashtable
特点 : 底层是哈希表结构,不能存入null键null值,线程安全,jdk1.0效率低,用于键的对象必须实现hashcode和equals方法
问题:Hashtable的键可以是int类型吗?
答:不行,因为集合中只能存入对象,不能存入基本数据类型(数组既可以存入基本数据也可以存入引用数据类型),
平时我们hashtable.add(1,"tu");这里其实是有个自动装箱的过程,相当于hashtable.add(new Integer(1),"tu");
2.HashMap
特点:底层是哈希表结构,允许使用null键null值,线程不安全,jdk1.2效率高,与Hashtable基本相同
3.TreeMap
特点:底层是二叉树结构,线程不安全,可以给map集合中的键进行排序,键的对象也需要有比较性,如果
键没有比较性则必须给TreeMap传入一个比较器。
与set集合很像,其实set集合底层用的就是map集合
三:Map.Entry实际上是Map集合内部的一个接口
interface Map{
public static interface Entry{
public abstract Object getKey();
public abstract Object getValue();
}
}
class HashMap implements Map{
class hash implements Map.Entry{
public Object getKey(){}
public Object getValue(){}
}
}
二:Map遍历的方式:
1.通过keySet()方法取出map集合所有key的set集合,然后通过set集合的迭代器取出所有的key,继而取出值
2.通过entrySet()方法取出map集合中key和values关系的set集合,该集合中是Map.entry对象