泛型类、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();
泛型类、Map集合的更多相关文章
- Java基础知识强化之IO流笔记66:Properties的概述 和 使用(作为Map集合使用)
1. Properties的概述 Properties:属性集合类.是一个可以和IO流相结合使用的集合类. 该类主要用于读取以项目的配置文件(以.properties结尾的文件 和 xml文件). ...
- List和Map集合详细分析
1.Java集合主要三种类型(两部分): 第一部分:Collection(存单个数据,只能存取引用类型) (1).List :是一个有序集合,可以放重复的数据:(存顺序和取顺序相同) (2).Set ...
- Java版本:识别Json字符串并分隔成Map集合
前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新思考方案. 遇到的C#转Java的一些 ...
- Java常用的几种集合, Map集合,Set集合,List集合
Java中 Object是所有类的根 Java集合常用的集合List集合.Set集合.Map集合 Map接口常用的一些方法 size() 获取集合中名值对的数量 put(key k, value v ...
- Map集合
1:Map (1)将键映射到值的对象. 一个映射不能包含重复的键:每个键最多只能映射到一个值. 键值对的方式存在 (2)Map和Collection的区别? A:Map 存储的是键值对形式的元素,键唯 ...
- MyBatis的一系列问题的处理(遍历Map集合和智能标签和属性和字段不一样的解决办法 和sql片段)(三)
一.字段名与属性名(数据库的名字)不一样怎么办? 方案一:在小配置中配置一个resultMapper <!--方案一:resultMapper 字段名与属性名不一致 --> <res ...
- Map集合及与Collection的区别、HashMap和HashTable的区别、Collections、
特点:将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值. Map集合和Collection集合的区别 Map集合:成对出现 (情侣) ...
- java://Comparator、Comparable的用法(按照要求将map集合的键值对进行顺序输出)
import java.util.*; public class Person implements Comparable<Person>//使Person的属性具有比较性 { priva ...
- Java集合类学习笔记(Map集合)
Map用于保存具有映射关系的数据,因此Map集合里保存着两组数据,一组用于保存Map的key,一组用于保存key所对应的value. Map的key不允许重复. HashMap和Hashtable都是 ...
随机推荐
- php5.3 不支持 session_register() 此函数已启用的解决方法
php从5.2.x升级到5.3.2.出来问题了.有些原来能用的程序报错了,Deprecated: Function session_register() is deprecated php从5.2.x ...
- 列表页url参数格式分析【求指教】
运营对列表页url制定静态化模式,与区区观点相悖.遂请大家指教点解. 动态参数包含6个,分别是: 1认证(有机),2品类(水果),3地区(丰台),4状态(众筹中),5排序(评分),6分页 使用状态非常 ...
- [转]iOS之浅谈纯代码控制UIViewController视图控制器跳转界面的几种方法
参考:http://www.mamicode.com/info-detail-469709.html 一.最普通的视图控制器UIViewContoller 一个普通的视图控制器一般只有模态跳转的功能( ...
- MySQL下Limit使用及性能分析
对于一直用Oracle的我,今天可是非常诧异,MySQL中同一个函数在不同数量级上的性能居然差距如此之大. 先看表ibmng(id,title,info) 唯一 id key 索引title 先看 ...
- 2D image convolution
在学习cnn的过程中,对convolution的概念真的很是模糊,本来在学习图像处理的过程中,已对convolution有所了解,它与correlation是有不同的,因为convolution = ...
- JNI/NDK开发指南(一)—— JNI开发流程及HelloWorld
转载请注明出处:http://blog.csdn.net/xyang81/article/details/41777471 JNI全称是Java Native Interface(Java本地接口)单 ...
- xHtml+css学习笔记
第一节 xHTML规范 *文档方面 -必须定义文档类型(DTD)和名字控件 *标签方面 -所有标签均要小写.关闭.合理嵌套.ID不能重复 -标签属性药有值,属性值要加印号且不能为空 -图片一定要加上a ...
- void (*fun)(void);什么意思?
2440test程序中的Main.c中在结构体中有这么一句: void (*fun)(void); 后查阅资料得知这句代码的意思是: 定义一个函数指针. 比如:定义一个指向函数的指针,该函数有一个整形 ...
- greenDaoMaster的学习研究
最近一直在研究一个第三方的开源框架,greenDaoMaster是一个移动开发的ORM框架,由于网上一直查不到使用资料,所以自己摸索总结下用法. 首先需要新建一个JAVA项目用来自动生成文件.需要导入 ...
- JAVA 抛出与声明异常
在编程过程中,我们往往会遇到这种情况,在当前环境中无法解决,比如用户传入的参数错误,IO设备问题等.此时,就要从当前环境中抛出异常提交给上级来处理. 在JAVA语言中,使用throw关键字来抛出异常. ...