泛型:
JDK1.5版本以后出现的新特性。用于解决安全问题,是类型一个安全机制。
好处:
1.将运行时期出现问题ClassCastException,转移到了编译时期。
a) 方便与程序员解决问题。让运行事情问题减少,安全。
2.避免了强制转换麻烦。
泛型类:
什么时候定义泛型类?
当类中要操作的引用数据类型不确定的时候
早期定义Object来完成扩展, 现在定义泛型来完成扩展
泛型方法:
泛型类定义的泛型,在整个类中有效,如果被方法使用,
那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。
为了让不同方法可以操作不同类型,而且类型还不确定。
那么可以将泛型定义在方法上。
在方法上定义泛型 ,< >放在返回值前面。
特殊之处:
静态方法不可以访问类上定义的泛型。
如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。
----------------------------------------------------------------------------------------------------------------------
Map:
Map集合:该集合存储键值对。 一对一对往里存。而且要保证键的唯一性。
1.添加、
a) put(K key, V value)
b) putAll(MapK,? extends V> m)
2.删除、
a) clear(); / / 移除
b) remove(Object key)
3.判断、
a) containsValue(Object value)
b) containsKey(Object key)
c) isEmpty()
4.获取、
a) get(Object key)
b) size()
c) values()
Map
|----Hashtable:底层是哈希表数据结构,不可存入null键、值,该集合线程同步的。JDK1.0,效率低
|----HashMap:底层是哈希表数据结构,可存入null键、值,该集合线程不同步的。
JDK1.2,效率高
|----TreeMap:底层是二叉树数据结构,线程不同步,可以用于给map集合中的键排序。
和Set很像。__________________-其实,Set底层就是勇士了Map集合。
----------------------------------------------------------------------------------------------------------------------
map集合的两种取出方式:
1.Set
所以可以迭代方式取出所有的键,在根据get方法,获取每一个键对应的值。
Map集合的取出原理:将map集合转成set集合。在通过迭代器取出。
2.Set
而这个关系的数据类型就是:Map.Entry
Map.Entry: 其实Entry也是一个接口,它是Map接口中的一个内部接口(且是public的和static的)。 (同内部类)。
什么时候使用map集合呢?
当数据之间存在着映射关系时,就要先想到map集合。
Collections有个shuffle方法,可以把list集合的元素随机排放(同扑克洗牌)。
集合变数组。
Collection接口中的toArray方法。
1.执行类型的数组到底要定义多长呢?
当指定类型的数组长度小于集合的size,那么该方法内部会创建一个新的数组,长度为集合的size。
当指定类型的数组长度大于集合的size,就不会新创建了数组,而是使用传递进来的数组。
所以创建一个刚刚好的数组最优。
2.为什么要将集合变数组?
为了限定对元素的操作。不需要进行增删了