码迷,mamicode.com
首页 > 编程语言 > 详细

java集合之Map

时间:2014-08-22 16:11:59      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:java   使用   io   文件   数据   ar   line   new   sp   

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

标签:java   使用   io   文件   数据   ar   line   new   sp   

原文地址:http://www.cnblogs.com/alec7971/p/3929480.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!