基于java构造方法Vector修改元素源码分析
作者:叫我王员外就行 发布时间:2023-11-25 10:54:56
标签: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 = 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
投稿
猜你喜欢
- instanceof判断某个对象是否是某个类的实例或者某个类的子类的实例。它的判断方式大概是这样的:public<T> bool
- 附GitHub源码:WebViewExplore一、WebView的基础配置WebSettings ws = getSettings();w
- 前言LocalDateTime、LocalDate、LocalTime 是 Java8 全新的日期框架,加强了对时间的管理,有很多特别好用的
- 使用HTTPclient访问url获得数据最近项目上有个小功能需要调用第三方的http接口取数据,用到了HTTPclient,算是做个笔记吧
- 一、Kotlin 调用 Java1. kotlin 关键字转义java 中的方法或变量 是 kotlin 的关键字时,使用反引号 `` 对关
- 刚开始我以为熔断和降级是一体的,以为他们必须配合使用; 只不过名字不一样而已,但是当我经过思考过后,发现他们其实不是一个东西;降级什么是服务
- 本博文将为您提供自Java 7以来增加的很棒的新功能的示例。我将展示每个Java版本的至少一项重大改进,一直到2020年秋季发布的Java
- 导读Spring Boot应用可以使用spring-boot-maven-plugin快速打包,构建一个可执行jar。Spring Boot
- springboot启动失败的问题springboot版本是1.3.0.M1,连接的mysql版本为8,用spring-boot-start
- 1.简介使用线程池可以避免线程的频繁创建以及销毁。JAVA中提供的用于实现线程池的API:Executor、ExecutorService、
- Java中线程分为两种类型:用户线程和守护(服务)线程。通过Thread.setDaemon(false)设置为用户线程;通过Thread.
- 一个线程如何知道另一线程已经结束?Thread类提供了回答此问题的方法。有两种方法可以判定一个线程是否结束。第一,可以在线程中调用isAli
- 一、@Configuration注解1、基本使用自定义配置类/** * 1、@Configuration 告诉SpringBoot这是一个配
- 前言开发传统Java WEB工程时,我们可以使用JSP页面模板语言,但是在SpringBoot中已经不推荐使用了。SpringBoot支持如
- 在SpringBoot中,当需要获取到配置文件数据时,除了可以用Spring自带的@Value注解外,SpringBoot提供了一种更加方便
- 本文实例为大家分享了java实现鲜花销售系统的具体代码,供大家参考,具体内容如下一、练习目标1.体会数组的作用2.找到分层开发的感觉3.收获
- 本文实例为大家分享了Java实现简单幸运抽奖的具体代码,供大家参考,具体内容如下代码模块:User类:package test1;publi
- 什么是RecyclerView关于RecyclerView,是一个主要用于展示和回收View的有一个控件,在官用了一句话来概括Recycle
- 公司的老项目要改造多租户,于是进入了大坑,本文写点遇到的坑以及解决方案,每次遇到问题在网上搜了好久,记录下来,防止以后忘掉。(一).方案网上
- 大致分为以下几个方面:一些查询指令整理使用SQL语句进行特殊查询检测表字段是否存在数据库升级数据库表字段赋初始值一、查询指令整理1.链式执行