一、泛型(JDK1.5以后出现了泛型)泛型:用于解决安全问题是一个安全机制。
1、 泛型格式:通过<>来定义要操作的引用数据类型。
2、 好处:
(1)将运行时出现的ClassCastException转移到了编译时期。方便程序员解决问题,让运行时期问题减少,安全。
(2)避免了强制转换的麻烦。
3、在使用java提供的对象时,什么时候使用泛型呢?
通常在集合框架中很常见,只要见到<>就要定义泛型。其中<>就是用来接受类型的。当使用集合时,将集合中的要存储的类型作为参数传递到<>中即可。
例如:
class Demo{
public void show(T t)
{
System.out.println("show:"+t);
}
publicvoid print(Q q)
{
System.out.println("print:"+q);
}
public staticvoid method(W t)
{
System.out.println("method:"+t);
}
}
class GenericDemo4
{
public static void main(String[] args)
{
Demod = new Demo();
d.show("haha");
//d.show(4);
d.print(5);
d.print("hehe");
Demo.method("hahahahha");
/*
Demo d = new Demo();
d.show("haha");
d.show(new Integer(4));
d.print("heihei");
*/
/*
Demod = new Demo();
d.show(new Integer(4));
d.print("hah");
Demod1 = new Demo();
d1.print("haha");
d1.show(5);
*/
}
}
《注意》静态方法不可以访问类上定义的泛型。如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。
4、泛型限定:? 通配符。也可以理解为占位符。
? extends E: 可以接收E类型或者E的子类型。上限。
? super E: 可以接收E类型或者E的父类型。下限。
二、Map集合
Map集合:该集合存储键值对,一对一对往里存。且要保证键的唯一性。
1、常用的方法:
(1)添加:put(K key, V value) ; putAll(Map
(2)删除:clear() ;remove(Object key)//返回对应的值
(3)判断:containsValue(Object value) ;containsKey(Object key) ;isEmpty() 返回的是boolean值。
(4)获取:get(Object key) ; size(); values()
(5)取出:entrySet() ; keySet()
2、Map子类对象的特点
Map:|--Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。jdk1.0.效率低。
|--HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。将hashtable替代,jdk1.2.效率高。
|--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。
3、Map集合的两种取出方式
Map集合的取出原理:将map集合转成set集合。在通过迭代器取出。
(1)keySet:将map中所有的键存入到Set集合。因为set具备迭代器。所以可以迭代方式取出所有的键,在根据get方法。获取每一个键对应的值。
import java.util.*;
class MapDemo2
{
public static void main(String[] args)
{
Map map = new HashMap();
map.put("02","zhangsan2");
map.put("03","zhangsan3");
map.put("01","zhangsan1");
map.put("04","zhangsan4"); //将Map集合中的映射关系取出。存入到Set集合中。
Set<map.entry> entrySet = map.entrySet();
Iterator<map.entry> it = entrySet.iterator();
while(it.hasNext()) {
Map.Entry me = it.next();
String key = me.getKey();
String value = me.getValue();
System.out.println(key+":"+value);
}
(2)Set<Map.Entry<k,v><map.entry> entrySet:将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是:Map.Entry,
Set<map.entry> entrySet = map.entrySet();
Iterator<map.entry> it = entrySet.iterator();
while(it.hasNext()) {
Map.Entry me = it.next();
String key = me.getKey();
String value = me.getValue();
System.out.println(key+":"+value);
}
/* //先获取map集合的所有键的Set集合,keySet();
SetkeySet = map.keySet(); //有了Set集合。就可以获取其迭代器。
Iteratorit = keySet.iterator();
while(it.hasNext()) {
String key = it.next(); //有了键可以通过map集合的get方法获取其对应的值。
String value = map.get(key);
System.out.println("key:"+key+",value:"+value);
}
*/
}
}