从零开始的Java——关于重载方法中系统int和Object的匹配

涉及的知识:

  1. 包装类型的自动装箱拆箱
    自动装箱触发条件:当基本类型给对应的包装类型变量赋值时触发
    自动拆箱出发条件:当包装类型给对应的基本类型赋值时或者包装类型参与运算时触发
  2. 方法的重载
    方法的重载的条件:同类下方法同名但是参数列表参数类型不同或参数数目不同或参数顺序不同
  3. 重载方法匹配优先度顺序
    ①直接匹配到的类型 > ②自动类型转换 > ③自动装箱 > ④匹配接口实现 > ⑤匹配父类 > ⑥匹配变长参数

前几天模拟实现简陋的ArrayList时,写到remove方法时,重载方法remove(int i)和remove(Objec i)出现了问题
remove(int i):功能实现按索引号删除数据元素
remove(Objec i):功能实现按数据元素内容删除

问题出现条件
当ArrayList中存储的为int类型数据时,但是想按数据元素内容删除时,remove(Objec i)就会失去作用,系统始终调用remove(int i)

public interface List {
   
    //返回线性表的长度
    public int size();

    //返回线性表中序号为i的数据元素
    public  Object get(int i);

    //线性表如果为空返回turn否则返回false
    public boolean isEmpty();

    //判断线性表是否包含元素e
    public boolean contains(Object e);

    //返回数据元素e在线性表中的索引
    public int indexOf(Object e);

    //将数据元素e插入到线性表的指定位置
    public void add(int i,Object e);

    //将数据元素e插入到线性表的末尾
    public void add(Object e);

    //将数据元素e插入到指定元素obj之前
    public boolean addBefore(Object obj,Object e);

    //将数据元素e插入到指定元素obj之后
    public boolean addAfter(Object obj,Object e);

    //删除线性表中索引为i的元素,并返回
    public Object remove(int i);

    //删除线性表中第一个元素为e的元素
    public boolean remove(Object e);

    //将线性表中索引为i的数据元素替换为数据元素e,返回原数据元素
    public  Object replace(Object e);

}

/*
 * 顺序表
 * 底层采用数组
 * 但是长度可以动态的变化
 * */
public class ArrayList implements List {
   
    private Object[] elementData;//底层是一个数组,还未确定长度

    private int size;  //不是数组长度,是元素个数

    public ArrayList() {
   
        this(4);

    }

    public ArrayList(int initialCapacity) {
   //initialCapacity 为顺序表初始表长
        
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值