在集合中使用泛型

     泛型是Jdk4.0以后的版本中所增加的新特性,增加这个新特性的原因是为了去解决元素存储的安全问题以及在获取和输出元素时需要进行强制转换的问题。
     我们都知道,在没有使用泛型的时候,创建一个集合时编译器是不会报错的,就像下面这样
List  B  = new  ArrayList();
     但是编译器会有个警告,意味着我没们有加泛型,因为我们在创建了上面这个List类的集合B后,添加的元素可以是任意类型Object类的,但是在实际使用过程中你只想添加一个类型的元素,比如说int型,但是却意外的添加了几种不同的类型,而这些元素全部都是以Object类型存在于集合B中的,而当你获取集合中的元素中时需要进行强制转换,可能会非常的繁琐,也可能结果会报错:ClassCastException。
     所以我们可以看出,如果一个集合没有使用泛型,它就是一个类型不安全的集合,要做到让它变得安全,就要用到泛型了,泛型的使用方式如下:
           List<E>  A  =  new  ArrayList<E>();
上句中的E可以是任意基本数据类型的包装类(如int的包装类为Integer等等),但是不能为基本数据类型,如果像上面这样使用泛型去创建一个集合的话,就是类型安全的了,即集合中只能存入你所指定的那个类型的元素,一旦你尝试存入其他类型,编译器就会报错,以下是一个例子
import  java.util.ArrayList;
import  java.util.HashMap;
import  java.util.Iterator;
import  java.util.List;
import  java.util.Map;

import  org.junit.Test;

public  class  TestGeneric {
@Test
         public  void  TestGeneric1(){
       List<Integer>  A  =  new  ArrayList<Integer>();
         A .add(55);
         A .add(66);
         A .add(77);
       Iterator<Integer>  i  =  A .iterator();
         while ( i  .hasNext())
       {
              System.  out .println( i  .next());
       }

}
}
//55
//66
//77
     上面这个例子是利用了泛型进行int型数据类型的存取,我们可以看到在存储完元素进行遍历的时候,迭代器也使用了泛型,这是必要的,否则就会有警告,提示你应该加上泛型
     对于Map接口,我们在使用泛型的时候应该给它的key与value都加上泛型,像这样:
                    //Map中泛型的使用
       Map<String,Integer>  M  =  new  HashMap< String,Integer >();
         M .put(  "MM" , 1001);
         M .put(  "GG" , 1004);
         M .put(  "GG" , 1003);
       Set<Map.Entry<String,Integer>>  a  =  M .entrySet();
         for (Map.Entry<String, Integer>  each  : a  )
       {
              System.  out .println( each  );
       }
     同样的,我们在遍历的时候,由于每一个key-value都是一个Entry,所以在遍历每一个Entry时也需要使用泛型
                    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值