您的位置:首页 > 编程语言 > Java开发

java基础(八)---map

2015-06-03 16:11 429 查看

MAP

  Map用于保存具体映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的key,另外一组值用于保存Map里的value,key和value都可以是任意类型的数据。Map的key不允许重复,即同一个Map对象的任何两个key通过equals方法比较总是返回false。map接口定义了如下方法:V put(K key,V value) -------------------->添加一个key-value对,如果当前map中已有一个与当前key相等的key-value对,则新的key-value会覆盖原来的key-value对。V remove(Object key) --------------------->删除指定的key所对应的key-value对,返回被删除key所关联的value,如果key不存在返回nullvoid clear() --------------------->删除该集合里的所有key-value对boolean containsKey(Object key)----------->查询该集合里是否包含指定的key,如果包含返回trueboolean containsValue(Object value)------->查询该集合是否包含一个或多个value,如果包含返回trueboolean isEmpty() -------------------->查询该集合是否为空int size() ------------------->查询该集合里的key-value对的个数Set entrySet() ------------------->返回该集合中包含的key-value对所组成的set集合,每个集合元素都是map.entry(entry是map的内部类)对象Set keyset() ------------------->返回该map中所有key组成的set集合拓展:MAP中包含一个内部类Entry,该类封装了一个key-value对。Entry包含如下三个方法:  Object getKey():返回该Entry里包含的key值。  Object getValue():返回该Entry里包含的value值。  Object setValue(V value):设置该Entry里包含的value值,并返回新设置的value值Map集合的遍历:例子:Map<String,String> hm = new HashMap<String,String>();hm.put("it002","hello");hm.put("it003","world");hm.put("it001","java");//A:键找值Set<String> set = hm.keySet();//获取所有键的集合  for(String key : set) {    String value = hm.get(key);    System.out.println(key+"---"+value);}//B:键值对对象找键和值Set<Map.Entry<String,String>> set2 = hm.entrySet();//获取所有的键值对对象的集合for(Map.Entry<String,String> me : set2) {  String key = me.getKey();  String value = me.getValue();  System.out.println(key+"---"+value);}

数据结构

ArrayXxx:底层数据结构是数组,查询快,增删慢LinkedXxx:底层数据结构是链表,查询慢,增删快HashXxx:底层数据结构是哈希表。依赖两个方法:hashCode()和equals()TreeXxx:底层数据结构是二叉树。两种方式排序:自然排序和比较器排序

HashMap和Hashtable

键是哈希表结构,可以保证键的唯一性HashMap和Hashtable都是map接口的实现类,他们之间的关系完全类似于ArrayList和Vector的关系:Hashtable是一个古老的map实现类,它从JDK1.0开始出现,当时java还没提供map接口。HashMap和Hashtable区别:  1.Hashtable是一个线程安全的map实现,但HashMap是线程不安全的实现,故HashMap的性能较高  2.Hashtable不允许使用null作为key和value,如果试图将null放入Hashtable,会报NullPointException异常;但HashMap可放入null作为key或value。Hashtable的一个子类Properties:  Properties类似Windows操作平台上的ini文件就是一种属性文件。Properties可以把Map对象和属性文件管理起来,从而可以把map对象中的key-value对写入属性文件。也可以把属性文件里的内容加载到map对象中,由于属性文件里的属性名、属性值只能是字符串类型,故Properties里的key、value都是字符串类型。它有如下方法:String getProperty(String key) :获取Properties中指定属性名对应的属性值。
Object setProperty(String key, String value) :设置属性值,类似于Hashtable的put方法。void load(Reader reader):从属性文件中加载key-value对,把加载的key-value对追加到Properties里。void store(OutputStream out, String comments):将Properties的key-value对输出到属性文件里。

TreeMap

键是红黑树结构,可以保证键的排序和唯一性
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: