JAVA基础篇----泛型在集合的应用
- //集合中未使用泛型时:
- //对于ArrayList:
- ArrayList arr= new ArrayList();
- //假设你要存放一组学生的成绩:
- arr.add(99);
- arr.add(100);
- arr.add(93);
- arr.add(92);
- arr.add("95");//这就是问题所在,即对存储的数据控制不够严格,容易把其他类型的数据混入
- for(Object o : arr){
- //并且对存入的数据进行强制转换会报ClassCastException异常
- int i = (int)o;
- System.out.println(o);
- }
- //在集合中使用泛型:
- //尖括号<>里面放的是基本类型所对应的包装类
- ArrayList arr= new ArrayList();
- //假设你要存放一组学生的成绩:
- arr.add(99);
- arr.add(100);
- arr.add(93);
- arr.add(92);
- //arr.add("95");使用了泛型后,对实参就有了限制,保证数据的安全,如果不符合类型的数据就会编译时报错
- for(Integer o : arr){
- int i = o;//可以不用再去强制转换,直接就可以自动拆箱即可
- System.out.println(o);
- }
- Iterator it = arr.iterator();//或者是Iterator it = arr.iterator();对于迭代器的遍历方式有无泛型两个都可以
- while(it.hasNext()){
- System.out.println(it.next());
- }
- HashMap HM = new HashMap();
- HashMap hm = new HashMap();
- //JDK7以后可以把new后面<>中的类型省略即HashMap hm = new HashMap<>();
- hm.put(1001,"张三");
- hm.put(1002,"李四");
- hm.put(1003,"王五");
- Set> set = hm.entrySet();
- Iterator> it = set.iterator();
- while(it.hasNext()){
- Map.Entry me = it.next();
- Integer k = me.getKey();
- String v = me.getValue();
- System.out.println(k + "->" + v);
- }
-
-