java基础之泛型,Map集合

泛型:

 

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  keySet:将map中所有的键存入到Set集合。因为set具备迭代器。

所以可以迭代方式取出所有的键,在根据get方法,获取每一个键对应的值。

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

2.Set> entrySet:将Map集合中的映射关系存入到了set集合中,

而这个关系的数据类型就是:Map.Entry

 

Map.Entry:  其实Entry也是一个接口,它是Map接口中的一个内部接口(且是public的和static的)。  (同内部类)。

 

什么时候使用map集合呢?

当数据之间存在着映射关系时,就要先想到map集合。

Collections有个shuffle方法,可以把list集合的元素随机排放(同扑克洗牌)。

集合变数组。

Collection接口中的toArray方法。

1.执行类型的数组到底要定义多长呢?

当指定类型的数组长度小于集合的size,那么该方法内部会创建一个新的数组,长度为集合的size。

当指定类型的数组长度大于集合的size,就不会新创建了数组,而是使用传递进来的数组。

所以创建一个刚刚好的数组最优。

2.为什么要将集合变数组?

为了限定对元素的操作。不需要进行增删了

 

你可能感兴趣的:(基础学习笔记)