软件编程
位置:首页>> 软件编程>> java编程>> 基于java构造方法Vector修改元素源码分析

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

作者:叫我王员外就行  发布时间:2023-11-25 10:54:56 

标签:java,构造方法,Vector,修改元素

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

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

前言

增删改查,修改元素,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;
   }

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

来源:https://blog.csdn.net/cadi2011/article/details/116545546

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com