基于java构造方法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 = https://www.it610.com/article/elementData(index); elementData[index] = element; return oldValue; }
【基于java构造方法Vector修改元素源码分析】用于修改某个下标的方法,该方法使用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(抽象类与接口的区别&重载与重写&内存泄漏)
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 基于|基于 antd 风格的 element-table + pagination 的二次封装
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- 数组常用方法一
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- 基于爱,才会有“愿望”当“要求”。2017.8.12
- Java|Java基础——数组