基于java构造方法Vector修改元素源码分析
作者:叫我王员外就行 时间:2023-11-25 10:54:56
(注意:本文基于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;
}
除了 * 的将新的元素对象作为第一个参数外,还有一个重要的区别是,此方法并不会返回旧的元素对象!!
来源:https://blog.csdn.net/cadi2011/article/details/116545546
标签:java,构造方法,Vector,修改元素
0
投稿
猜你喜欢
使用XSD校验Mybatis的SqlMapper配置文件的方法(2)
2023-06-29 07:51:34
IDEA设置Tab选项卡快速的操作
2022-07-15 18:20:31
C#中将DataTable转化成List<T>的方法解析
2023-02-06 23:20:39
C#通过链表实现队列的方法
2023-06-19 15:14:17
Android四大组件之Service详解
2023-10-16 14:22:38
Spring Security配置保姆级教程
2023-11-07 11:46:56
关于RxJava的一些特殊用法小结
2022-06-13 13:31:54
深入理解C♯ 7.0中的Tuple特性
2023-10-28 09:33:14
Jetpack navigation组件超详细讲解
2021-07-17 08:49:58
Java操作MongoDB数据库的示例代码
2023-11-23 04:15:51
java Iterator.remove()实例方法分析
2022-05-01 15:56:01
详解C语言内核字符串拷贝与比较
2023-11-02 15:22:30
spring mvc DispatcherServlet之前端控制器架构详解
2023-07-30 16:53:23
springboot+spring data jpa实现新增及批量新增方式
2023-01-27 03:45:53
Java 详解Collection集合之ArrayList和HashSet
2021-09-10 06:27:02
Android实现自定义圆形进度条
2022-10-28 04:55:22
Spring Boot整合Kafka教程详解
2023-06-14 06:02:54
Android应用强制更新APP的示例代码
2022-07-28 09:00:07
SpringMVC的注解@RequestMapping属性及使用
2022-12-31 02:03:00
详解利用SpringCloud搭建一个最简单的微服务框架
2023-08-21 04:24:32