黑马程序员-泛型集合的综合案例(附通配符注意事项)

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

Map<T,K>的案例:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class GenericsTest{
    public static void main(String[] args) {
        Map<String,Integer> map=new HashMap<String,Integer>();
        map.put("zhang",1);
        map.put("zhang",2);
        map.put("zhang",3);
        //map.put("li", "2");
        //map.put(3,"wang" );
        Set<Map.Entry<String,Integer>> allSet=map.entrySet();
        //输出的两种方式,第一种:
        for(Map.Entry<String, Integer> me:map.entrySet()){
            //循环输出Map的key,value
            System.out.println(me.getKey()+" : "+me.getValue());
        }
        System.out.println("******************************");
        //输出的第二种,第二种:
        //实例化Iterator
        Iterator<Map.Entry<String,Integer>> iter=allSet.iterator();
        //迭代输出
        while(iter.hasNext()){
            Map.Entry<String,Integer> me2=iter.next();
            System.out.println(me2.getKey()+" : "+me2.getValue());
        }
    }
}


泛型应用中的注意点:

Collection c=new Vector<String>( );可以,出现警告

Collection<String>c =new Vectror( )可以,出现警告
Vector<String> v=new Vector<Object>( )不可以

Vector<Object> v=new Vector<String >( ) 不可以

Vector v1=new Vector<String>( ) , Vector<Object> v2=v1;可以。
Vector<Integer> v[ ]=new Vector<Integer>[10]不可以

下面简单讲解一下通配符的注意事项:

public static void print(Collection<Object> col){
        for(Object obj: col){
            System.out.println(obj);
    }
col.add("Stirng");//没错
col=new HashSet<Date>();//会报告错误
与上面对比,再看下面的正确使用方式:

public static void print(Collection<?> col){
        for(Object obj: col){
            System.out.println(obj);
    }
col.add("Stirng");//错误,因为它不知道自己未来匹配的就是String
col.size();//可以,此方法跟参数类型无关
col=new HashSet<Date>();//可以
此次用的是通配符"?",所以可以把new HashSet<Date>()当成变量接收。

以此来个总结:使用"?"可以引用其他各种参数化的类型,通配符定义的变量主要用作引用,可以调用与参数化无关的方法,不能调用与参数化有关的方法。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值