————泛型: 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();

  

泛型类、Map集合的更多相关文章

  1. Java基础知识强化之IO流笔记66:Properties的概述 和 使用(作为Map集合使用)

    1. Properties的概述  Properties:属性集合类.是一个可以和IO流相结合使用的集合类. 该类主要用于读取以项目的配置文件(以.properties结尾的文件 和 xml文件). ...

  2. List和Map集合详细分析

    1.Java集合主要三种类型(两部分): 第一部分:Collection(存单个数据,只能存取引用类型) (1).List :是一个有序集合,可以放重复的数据:(存顺序和取顺序相同) (2).Set ...

  3. Java版本:识别Json字符串并分隔成Map集合

    前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新思考方案. 遇到的C#转Java的一些 ...

  4. Java常用的几种集合, Map集合,Set集合,List集合

    Java中  Object是所有类的根 Java集合常用的集合List集合.Set集合.Map集合 Map接口常用的一些方法 size() 获取集合中名值对的数量 put(key k, value v ...

  5. Map集合

    1:Map (1)将键映射到值的对象. 一个映射不能包含重复的键:每个键最多只能映射到一个值. 键值对的方式存在 (2)Map和Collection的区别? A:Map 存储的是键值对形式的元素,键唯 ...

  6. MyBatis的一系列问题的处理(遍历Map集合和智能标签和属性和字段不一样的解决办法 和sql片段)(三)

    一.字段名与属性名(数据库的名字)不一样怎么办? 方案一:在小配置中配置一个resultMapper <!--方案一:resultMapper 字段名与属性名不一致 --> <res ...

  7. Map集合及与Collection的区别、HashMap和HashTable的区别、Collections、

    特点:将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值. Map集合和Collection集合的区别 Map集合:成对出现 (情侣)                       ...

  8. java://Comparator、Comparable的用法(按照要求将map集合的键值对进行顺序输出)

    import java.util.*; public class Person implements Comparable<Person>//使Person的属性具有比较性 { priva ...

  9. Java集合类学习笔记(Map集合)

    Map用于保存具有映射关系的数据,因此Map集合里保存着两组数据,一组用于保存Map的key,一组用于保存key所对应的value. Map的key不允许重复. HashMap和Hashtable都是 ...

随机推荐

  1. 不同版本PHP之间cURL的区别(-经验之谈)

    之前在做一个采集的工具,实现采集回来的文章,图片保存起来.文章内容是保存在数据库,图片是先需要上传到图片服务器,再返回图片地址,替换掉文章的图片地址. 问题来了:都能成功采集都东西,但是,本地测试是正 ...

  2. C#——System.Diagnostics.Process.Start的妙用

    我们经常会遇到在Winform或是WPF中点击链接或按钮打开某个指定的网址, 或者是需要打开电脑中某个指定的硬盘分区及文件夹, 甚至是"控制面板"相关的东西, 那么如何做呢? 答案 ...

  3. 【译】4个你需要知道的Asset Catalog的秘密

    本文由CocoaChina译者 @唧唧歪歪 翻译,作者:Hector Matos 原文:4 XCODE ASSET CATALOG SECRETS YOU NEED TO KNOW 恶梦 想象你正在干 ...

  4. 由 OR 引起的死循环

    在客商迁移测试时,程序一旦开始执行就不能自动停止.只能通过手动中断应用服务器的进程来停止.检查迁移的一个表,这个表迁移前没有数据,迁移最多会插入3w条左右数据,但是迁移过程执行2个多小时候再看,已经有 ...

  5. gulp 中的增量编译

    最近花一点时间学了下 gulp,顺便学了下 sass,因为工作中并不需要用(我比较希望学习是需求驱动),所以一直拖到现在才学.突然觉得学习这类工具性价比很高,半天一天即可上手,技能树丰富了(尽管可能只 ...

  6. iOS oc 中的闭包

    //闭包 NSString* s =@"123"; void (^block)() = ^() { NSLog(@"%@",s); }; block();// ...

  7. bzoj 3283: 运算器 扩展Baby Step Giant Step && 快速阶乘

    3283: 运算器 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 184  Solved: 59[Submit][Status][Discuss] D ...

  8. bzoj 3144: [Hnoi2013]切糕 最小割

    3144: [Hnoi2013]切糕 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 681  Solved: 375[Submit][Status] ...

  9. Cocos2d-x win7下 android环境搭建

    原地址:http://blog.csdn.net/xingboss3/article/details/8267512/ 综合了以下三篇 http://www.cnblogs.com/lhming/ar ...

  10. 在 Visual Studio 2010 中创建 ASP.Net Web Service

    第一步:创建一个“ASP.Net Empty Web Application”项目 第二步:在项目中添加“Web Service”新项目 第一步之后,Visual Studio 2010会创建一个仅含 ...