泛型 Map集合(day18)

来源:互联网 发布:akko ducky one 87知乎 编辑:程序博客网 时间:2024/05/21 10:12

        

第十八天 泛型 Map集合
 1. 泛型的出现
        程序的安全性
        安全问题由运行时期,提前到了编译时期
        JDK1.5 以后出现的
        (JDK1.5版本,是一个里程碑式的升级)程序的升级
          安全性
          效率
         代码的减少
         避免了强制类型转换

2. 泛型的定义和使用 <数据类型>
   强制集合只能存储一种数据类型
   什么时候使用泛型
        当你使用一个类的时候,发展这个类名带<>,用泛型
         ArrayList<E> 泛型, E是一个变量,可变化的类型,使用ArrayList集合,指定什么数据类型
        这个E就表示什么数据类型
  ArrayList<Integer>   boolean add(Integer e) 

3. 泛型类泛型方法
    面试
    考试你对泛型限制数据类型是否理解

4. 泛型通配符 ?
    不确定泛型类型的时候,可以使用?来进行通配,了解即可

5. 泛型的限定  了解即可
        在泛型限制的数据类型是,只能传递某一个派系的成员
           ? extends E 只能是E或者是E的子类型  泛型的上限限定
           ? super E 只能是E或者是E的父类型 泛型的下限限定

6. Map集合
            双列集合
           存储的键是唯一的,每个键只能对应一个值
           Map接口中的方法
          V put(K,V)
          put方法的返回值,是null,但是如果覆盖了原有的键,返回值,就是原有键对应的值
           boolean containsKey(Object key) 判断Map集合中,有没有这个键 
          containsValue(Object value) 判断Map集合中,有没有这个值

         V get(Object key) 获取Map集合中,指定键对应的值 如果没有这个键,返回null

7. Map集合中存储元素的取出方式 第一种 *****
           利用Set集合 Set<K> keySet()  
           keySet()方法,作用是,将Map集合中的键,存储到Set集合
          迭代Set集合,next()方法返回的就是键
          使用Map集合中的get方法,来获取值

8. Map集合中存储元素的取出方式 第二种 *****
           利用Map集合中,存储键值对的关系来获取
           Map集合本身提供一个方法,entrySet()方法,返回键值存储关系,关系是Map.Entry
          Set<Map.Entry<K,V>> entrySet()
          将集合中键值对的关系,又保存到了Set集合

9. HashMap
         底层数据结构是一个实现哈希表的双列集合
         线程不安全,执行效率高
         存储到HashMap中的键,如果是自定义对象,需要对象重写hashCode和equals

10. TreeMap 
         底层数据结构 是红黑树(优化了算法的二叉树)
         存储在TreeMap集合中的对象,会进行自然排序,排序依据是键
        TreeMap线程不安全,执行效率高
         存储到TreeMap集合中的键,必须具备比较性,也可以让TreeMap本身具备比较性
        需要我们自定义比较器,实现Comparator接口

11. 实现一个统计功能
        hgfdsewrhgfdkljhsajdtporissvbhadv每个字母出现了多少次
       结果 a字母出现2次,b字母出现5次 d字母出现10次
       有序排列的,集合中的对象,TreeSet
  
12. 集合中的子类中的特点和什么时候使用
           ArrayList
          数组结构,查询快,增删慢
          LinkedList
          链表结构,查询慢,增删块
          HashSet
          哈希表结构,不重复元素
 TreeSet
        二叉树,存储的元素自然排序
  HashMap
        哈希表结构,双列集合,不重复元素
   -   TreeMap
          红黑树结构,双列集合,存储的元素自然排序

  什么时候用集合
    数据太多,用数组存储
    对象太多,用集合存储
 
  如果是这些对象经常频繁进行查找工作 ArrayList
  如果是这些对象经常频繁进行修改工作 LinkedList

  存储集合中的对象需要唯一吗,如果需要 HashSet
  存储集合中的对象需要唯一吗,需要排序吗 如果需要 TreeSet

  如果需要同时存储两个对象,一个键,一个值,必须Map集合

  实在不知道该用哪一个集合 ArrayList(使用频率最高)
  能用Map不要用Set ,Set底层调用的就是Map中的功能


原创粉丝点击