基于java构造方法Vector修改元素源码分析

 更新时间:2021年09月09日 17:33:41   作者:叫我王员外就行  
本篇文章是关于ava构造方法Vector源码分析系列文章,本文主要介绍了Vector修改元素的源码分析,有需要的朋友可以借鉴参考下,希望可以有所帮助

(注意:本文基于JDK1.8)

前言

增删改查,修改元素,Vector提供了3个方法,包括迭代器中的一个,不过本文只分析Vector自身的两个修改元素的方法,迭代器中的方法将单独分析

set(int,E)方法分析

    public synchronized E set(int index, E element) {
        if (index >= elementCount)
            throw new ArrayIndexOutOfBoundsException(index);
 
        E oldValue = elementData(index);
        elementData[index] = element;
        return oldValue;
    }

用于修改某个下标的方法,该方法使用synchronized修饰,这是为了保护共享变量elementData被多个线程同时修改,在同一时刻只有一个线程可以执行该方法,其它未获得对象锁的线程将会阻塞在方法的入口,等待对象锁的释放,传入的参数index表示要修改哪个下标的元素,传入的参数element表示要修改成哪个新的元素对象

1、检查下标是否合法

合法的下标,必须是小于Vector对象持有的elementCount数的,因为只有0到elementCount-1的下标才保存着元素,其它下标均会抛出一个ArrayIndexOutOfBoundsException对象,用于提示用户,传入的下标有问题……

2、获取当前下标处已保存的元素对象

使用elementData()方法,传入下标进去即可,获得的旧元素对象,将临时保存在局部变量oldValue中

3、将新的元素对象更新到指定下标处

只需elementData的下标index处,赋值为新的元素对象即可

4、向调用者返回旧的元素对象

setElementAt(E,int)方法分析

    public synchronized void setElementAt(E obj, int index) {
        if (index >= elementCount) {
            throw new ArrayIndexOutOfBoundsException(index + " >= " +
                                                     elementCount);
        }
        elementData[index] = obj;
    }

除了反人类的将新的元素对象作为第一个参数外,还有一个重要的区别是,此方法并不会返回旧的元素对象!!

总结

1、替换元素是一种特殊的删除,因为马上就有新的元素对象又添加进来

2、旧的元素对象还可以使用的话,那set(int,E)替换方法本身会返回旧的元素,使用它很方便

以上就是基于java构造方法Vector修改元素源码分析的详细内容,更多关于java构造方法Vector的资料请关注脚本之家其它相关文章!

相关文章

  • Java模拟微信来电提醒示例

    Java模拟微信来电提醒示例

    这篇文章主要为大家介绍了Java模拟微信来电提醒示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Java 枚举类和自定义枚举类和enum声明及实现接口的操作

    Java 枚举类和自定义枚举类和enum声明及实现接口的操作

    这篇文章主要介绍了Java 枚举类和自定义枚举类和enum声明及实现接口的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • SpringBoot使用MyBatis时的几种传参规范示例

    SpringBoot使用MyBatis时的几种传参规范示例

    使用Mybatis作为持久层框架时,对于数据库的增删改查等操作都需要参数的传递,本文就详细的介绍了一下SpringBoot使用MyBatis时的几种传参规范示例,感兴趣的可以了解一下
    2022-02-02
  • Eclipse 2022 设置中文汉化的超详细图文教程

    Eclipse 2022 设置中文汉化的超详细图文教程

    这篇文章主要介绍了Eclipse 2022 设置中文汉化的超详细图文教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • springmvc集成shiro登录失败处理操作

    springmvc集成shiro登录失败处理操作

    这篇文章主要介绍了springmvc集成shiro登录失败处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • 详解Java的构造方法及类的初始化

    详解Java的构造方法及类的初始化

    这篇文章主要为大家详细介绍了Java的构造方法及类的初始化,文中的示例代码讲解详细,对我们学习Java有一定的帮助,感兴趣的小伙伴可以了解一下
    2022-08-08
  • openEuler 搭建java开发环境的详细过程

    openEuler 搭建java开发环境的详细过程

    这篇文章主要介绍了openEuler 搭建java开发环境,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Java项目导出数据为 PDF 文件的操作代码

    Java项目导出数据为 PDF 文件的操作代码

    一个小需求,需要将页面上的数据导出为PDF,正常情况下这个需求需要让前端来做,但是现在上面让咱们后端来做,也没问题,这篇文章主要介绍了Java项目导出数据为 PDF 文件的操作代码,需要的朋友可以参考下
    2022-12-12
  • Java基础详解之面向对象的那些事儿

    Java基础详解之面向对象的那些事儿

    这篇文章主要介绍了Java基础之面向对象那些事儿,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-04-04
  • Java中初始化List集合的八种方式汇总

    Java中初始化List集合的八种方式汇总

    List 是 Java 开发中经常会使用的集合,下面这篇文章主要给大家介绍了关于Java中初始化List集合的八种方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06

最新评论