黑马程序员--集合总结(三)

来源:互联网 发布:索尼移动硬盘加密软件 编辑:程序博客网 时间:2024/05/21 16:56

           ----------------------- android培训java培训、java学习型技术博客、期待与您交流! ----------------------

三,Map初印象
 1,什么是Map
  Map是一个集合接口,Map接口
  它是一组成对的“键值对”对象,允许根据键来查找值
 2,Map有什么特点
  Map集合的键不允许有重复,所以Map的所有键构成了一个Set集合
 3,如何使用Map
  根据不同需求,创建Map接口的实现类对象来存储、操作元素。
  在取出元素的时候,可以通过以下两种方法迭代集合:
  a,keySet: 调用keySet()方法获取一个由所有键对象组成的Set集合, 迭代Set集合获取每一个键对象,
     再使用键对象获取值对象.
  b,entrySet: 调用entrySet()方法获取一个由所有Entry对象组成的Set集合,
     迭代Set集合获取每一个Entry对象, 再通过Entry对象获取键和值.
 4,什么时候使用Map
  当需要存储及操作的元素是双列的时候需要使用Map集合
 5,Map分类
  Map主要分为大类:HashMap,LinkedHashMap,TreeMap,HashTable和Properties
  分类标准:实现原理不同,效率不同
  各自特点
   a,HashMap: 去重复, 效率高
   b,TreeMap: 排序
   c,LinkedHashMap: 保留存储顺序
   d,Hashtable: 和HashMap原理相同, 线程安全, 效率低 . Hashtable中的键和值都不能为null
   e,Properties: 通常用来操作配置文件, Hashtable的子类.
 (一)HashMap
  (1)HashMap初印象
   1)什么是HashMap
    HashMap是Map接口的实现类,他是基于哈希表的 。
    此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,
    HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
   2)HashMap有什么特点
    线程不安全,存取速度快,允许存放null键,null值。
    通过HashSet原理保证键唯一性
   3)如何使用HashMap
    创建HashMap对象,操作元素,如果存入的是对象,并且去重复,那要正确重写用作键对象类的hashCode和equals方法
    在取出元素的时候,可以通过Map的两种方法迭代集合.
   4)什么时候使用HashMap
    只要求键去重复,不需要对键排序且对键的存储顺序无要求。
 (二)LinkedHashMap
  (1)LinkedHash初印象
   1)什么是LinkedHashMap
    LinkedHashMap是HashMap的子类,是Map接口的哈希表和链接列表实现类,具有可预知的迭代顺序。
    此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。
    此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序)。
    注意,如果在映射中重新插入 键,则插入顺序不受影响。
    (如果在调用 m.put(k, v) 前 m.containsKey(k) 返回了 true,则调用时会将键 k 重新插入到映射 m 中。)
   2)LinkedHasheMap有什么特点
    在保证对键元素去重复的同时能够保证存储顺序。
   3)如何使用LinkedHashMap
    创建LinkedHashMap对象,操作元素,如果存入的是对象,并且去重复,
    那要正确重写用作键对象类的hashCode和equals方法
    在取出元素的时候,可以通过Map的两种方法迭代集合.
   4)什么时候使用LinkedHashMap
    要求键去重复,且需要保留存储顺序。
 (三)TreeMap
  (1)TreeMap初印象
   1)什么是TreeMap
    TreeMap是Map的实现类,是基于二叉树结构的。
    该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。
   2)TreeMap有什么特点
    通过二叉树算法保证键唯一性
    对键进行排序,排序原理与TreeSet相同。
   3)如何使用TreeMap
    创建TreeMap对象,操作元素,如果用作键的对象是非基本类型元素,需要指定比较算法。方式如TreeSet。
    在取出元素的时候,可以通过Map的两种方法迭代集合.
   4)什么时候使用TreeMap
    要求去重复且要排序的时候。
 (四)HashTable
  (1)HashTable初印象
   1)什么是HashTable
    HashTable是Map接口的实现类,此类实现一个哈希表,该哈希表将键映射到相应的值。
    任何非 null 对象都可以用作键或值。
    为了成功地在哈希表中存储和获取对象,用作键的对象必须实现 hashCode 方法和 equals 方法。    
   2)HashTable有什么特点
    和HashMap原理相同,线程安全, 效率低,不允许存放null键,null值,已被HashMap替代。
   3)如何使用HashTable
    创建HashTable对象,操作元素,如果存入的是对象,并且去重复,
    那要正确重写用作键对象类的hashCode和equals方法
    在取出元素的时候,可以通过Map的两种方法迭代集合.
   4)什么时候使用HashTable
    基本不用,已被HashMap替代。
 (五)Properties
  (1)Properties初印象
   1)什么是Properties
    Properties是HashTable的子类,是Map接口的实现类。
    该类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。
    属性列表中每个键及其对应值都是一个字符串。
   2)Properties有什么特点
    Hashtable的子类,所以也是线程安全的
    用于读写配置文件的,一般配置项等号两边都是String,所以该集合中的两列保存的都是String类型的数据
    这个集合中只能存String,所以不需要定义泛型。
   3)如何使用Properties
    创建Properties对象,操作元素
    在取出元素的时候,可以通过Map的两种方法迭代集合.
   4)什么时候使用Properties
    用于读写配置文件的 

----------------------- android培训java培训、java学习型技术博客、期待与您交流! ----------------------

详情请查看:http://edu.csdn.net/heima

原创粉丝点击