首页 > 代码库 > java集合之Map
java集合之Map
Map
Map用于保存具有映射关系的数据。
Map中key不允许重复,value可以重复,key和value之间存在单向一对一关系
HashMap和Hashtable区别
1 Hashtable线程安全、HashMap线程不安全,所以HashMap性能高一点
2 Hashtable不允许用null做key和value,但hashMap可以。
为了成功在HashMap和Hashtable中存储、获取对象,用做key的对象必须实现hashCode和equals方法。
HashMap和Hashtable不能保证key-value对的顺序,他们判断两个key相等的标准是equals返回true,hashCode相等。
HashMap和Hashtable判断两个value相等的标准是equals返回true
与HashSet一样,重写key对象类的equals和hashCode,应该使他们保持一致,且尽量使用不可变对象作为key。否则也会出现和HashSet类似的混乱情形。
LinkedHashMap与HashMap的关系和LinkedHashSet与HashSet的关系类似。
properties类是Hashtable的子类,它key和value只能是String类型
使用示例:
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
public class TestPropertise {
/**
* @param args
* @throws IOException
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException, IOException {
// TODO Auto-generated method stub
Properties pro = new Properties();
//向properties中添加属性
pro.setProperty("username", "wildox");
pro.setProperty("password", "zmz");
//将其保存到a.ini文件中
pro.store(new FileOutputStream("a.ini"), "comment line");
Properties pro2 = new Properties();
pro2.setProperty("gender", "male");
//将a.ini中的属性名-属性值加到pro2中
pro2.load(new FileInputStream("a.ini"));
System.out.println(pro2);
}
}
TreeMap和TreeSet类似,使用了红黑树对key进行排序,从而保证了TreeMap中所有的key-value对处于有序状态。
TreeMap对key的要求与TreeSet对元素的要求基本一致
WeakHashMap与HashMap用法相似,区别在于HashMap的Key保留对实际对象的强引用,而WeakHashMap仅保持弱引用,这意味着,该对象所有key所引用的对象如果没有被其他强引用变量引用,则可能被垃圾回收。
IdentityHashMap叶与HashMap用法相似,只是该类的key仅当key1 == key2是才认为是相等的。
EnumMap实现类
EnumMap是与枚举类一起使用的Map,所有key值必须是单个枚举类的枚举值
EnumMap内部以数组形式保存,非常紧凑、高效
根据key的自然顺序(枚举类中的定义顺序)来维护key-value对的次序
EnumMap不允许null作为key,但允许null作为value
使用示例:
import java.util.EnumMap;
enum Season{
SPRING,SUMMER,FALL,WINTER
}
public class TestEnumMap {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
EnumMap em = new EnumMap(Season.class);
em.put(Season.SUMMER, "夏日炎炎");
em.put(Season.SPRING, "春暖花开");
System.out.println(em);
}
}
java集合之Map