Collection、泛型

java之Collection、泛型

Collection
在这里插入图片描述

1、迭代器遍历
在这里插入图片描述
Iterator是接口,names.iterator返回的是实现类
集合当中是什么类型,迭代器取出就是什么类型

2、集合并发修改异常
在这里插入图片描述
迭代器取出对象(it.iterator())时会有一个记忆长度

3、泛型
在这里插入图片描述
不使用泛型,在运行时报类型转换失败,使用特定类型的方法时还需要强制类型转换。
在这里插入图片描述
使用泛型,将运行时期的ClassCastException,转移到了编译时期变成了编译失败。
避免了类型强转的麻烦。

4、泛型,用来灵活地将数据类型应用到不同的类、方法、接口当中。将数据类型作为参数进行传递。

泛型写在类上:(泛型类)

在这里插入图片描述
创建对象时再确定E这个数据类型
在这里插入图片描述

泛型写在方法上:
在这里插入图片描述

在这里插入图片描述
调用show方法并传递参数的时候确定T这个数据类型,可以是String、Integer等。

泛型写在接口上:

//泛型接口
public interface MyInter<Q> {
    public abstract void show(Q q);
}

//1.当子类实现接口的时候,确定接口上的泛型
class MyClass1 implements MyInter<String>{
    @Override
    public void show(String s) {

    }
}

//2.当子类实现接口的时候,还是不确定泛型,把接口的泛型继续实现下来
//当实现类创建对象的时候确定
class MyClass2<Q> implements MyInter<Q>{
    @Override
    public void show(Q q) {
		MyClass2<String> imp= new MyClass2<String>();//此时确定类型Q
    }
}

通配符

/**
 * 通配符:
 *       正则表达式中"."代表任意字符
 *       在DOS中"*"代表任意内容
 * 泛型通配符:
 *       "?":代表任意类型
 *       <? extends Animal>: 表示一种泛型,
 *       这种泛型必须是Animal或Animal的子类
 *       <? super Animal>: 表示一种泛型,
 *       这种泛型必须是Animal或Animal的父类
 *
 * ArrayList中有一个方法
 *       addAll(Collection c);//把集合c里面的每一个元素添加到ArrayList中
 */
public class Generic {
    public static void main(String[] args) {
        ArrayList<String> names1 = new ArrayList<>();
        names1.add("111");
        names1.add("222");
        ArrayList<String> names2 = new ArrayList<>();
        names2.add("aaa");
        names2.add("bbb");
        ArrayList<Integer> names3 = new ArrayList<>();
        names3.add(111);
        names3.add(222);
        //Collection<? extends String>
        names1.addAll(names2);
        names1.addAll(names3);//报错
        System.out.println(names1);
    }
}

在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值