zoukankan      html  css  js  c++  java
  • 泛型类、Map集合

    ————泛型JDK1.5之后出现的新特性;用于解决安全问题,是一个类型安全机制。

      好处:

        1、运行时期出现的问题ClassCastException ,转移到了编译时期,方便于程序员解决问题,让运行时期问题减少。。

        2、避免了强制转换的麻烦。

      格式

        通过<> 来定义要操作的引用数据类型。

    在使用java提供的对象时,什么时候写泛型呢?

     答:通常在集合框架中很常见,只要见到<> 就要定义泛型。   其实<>就是用来接收泛型的。

      当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。

      泛型类: 

        什么时候定义泛型类?

           答: 当类中要操作的引用数据类型不确定的时候, 早期定义Object类来完成扩展; 现在定义泛型来完成扩展。

              泛型类定义的泛型,在整个类中有效,如果被方法使用;  

              那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。

              为了让不同的方法可以操作不同类型,而且类型还不确定,那么就可以将泛型定义在方法上。

      特殊之处:  

        静态方法不可以访问类上定义的泛型。

        如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。(在修饰符后面 、 返回值类型前面 :如 static <T> void)。

      高级应用:  

         :  通配符,也可以理解是占位符。

        extends E :  可以接收E 类型或者 E的子类型,上限。

        super E :  可以接收E 类型或者 E的父类型 ,下限。

      

    ————Map集合该集合存储键值对。 一对一往里存。而且要保证键的唯一性。

        1、添加

          put(K key, V value);

          putAll(Map < ? extends K , ? extends V > m);

        2、删除

          clear()

          remove(Object key)

        3、判断

          containsValue(Object value)

          containsKey(Object key)

          isEmpty()

        4、获取

          get(Object key)  size()  values()

          重要: entrySet()      keySet()

      Map

        |---Hashtable : 底层是哈希表数据结构,不可以存入null 键 null 值。该集合是线程同步的。Jdk1.0 效率低。

        |---HashMap : 底层是哈希表数据结构,允许使用 null 键和 null 值。该集合是线程不同步的。Jdk1.2 效率高。

        |---TreeMap  :底层是二叉树数据结构,线程不同步,可以用于给Map集合中的键进行排序。

    和Set很像。

      其实Set底层就是使用了Map集合

      

      添加元素,如果添加时,出现相同的键,那么后添加的值会覆盖原有的键值对。

      并put方法会返回 被覆盖的值。  例如:

      System.out.println("put :" + map.put( "01" + "jdfkslfh"));

      System.out.println("pUt: " + map.out( "01" + "djksl"));

      // 打印输出:  jdfkslfh 被返回 , 01 键上的值则为 djksl 

      ---可以通过get方法的返回值来判断一个键是否存在,通过返回null来判断

      ---获取map集合中所有的值

          Collection<String> coll = map.values();

      --->>> 1、Set<k> keySet

                将map中所有的键存入到Set集合中。因为Set具备迭代器,所有可以迭代方式取出所有的键,再根据get方法,获取每一个键对应的值。

              Map集合的取出原理: 将map结合转换set集合。在通过迭代器取出。

          2、Set<Map.Entry<k,v>> entrySet

                将map集合中的映射关系存入到了Set集合中,而这个关系的数据类型就是: Map.Entry。

      //先获取集合的所有键的set集合,keySet();

       Set<String> keySet =  map.keySet();

      //有了Set集合,就可以获取其迭代器。

       Iterator<String> it = keySet.iterator();

      

  • 相关阅读:
    Neutron LBaaS Service(2)—— Neutron Services Insertion Model
    Gevent工作原理(转)
    异步IO/协程/数据库/队列/缓存(转)
    IO多路复用(转)
    pytz库时区的坑(转)
    Python3.0的新特性(原创)
    Dockerfile 中的 CMD 与 ENTRYPOINT(转)
    RESTful及API设计(原创)
    RESTful服务最佳实践(转)
    Flask restful源码分析(原创)
  • 原文地址:https://www.cnblogs.com/jesonjason/p/5105263.html
Copyright © 2011-2022 走看看