Java实现更新顺序表中的指定元素的示例
一、思路
1.定义一个 pos 变量为要更新的位置,定义一个 value 变量为更新后的数值.
2.顺序表不能是空的,就肯定不可以更新元素.
3.pos位置要合法,要保证 pos 位置是处在顺序表范围内的.
4.更新功能不需要考虑扩容,因为不涉及到元素的增减.
5.更新的之前先获取到 pos 位置的下标,更新的时候直接将 value 赋值给 pos 位置即可.
二、图解
当前 pos 指向的是 2 下标,即 2 下标就是接下来要更新元素的位置,value 等于 100,即为接下来 pos 位置会更新为 100 。
更新后的图示如下图展示:
可以看到当前的顺序表中的元素依然是 4 个(没有改变),但是在 2 下标位置的元素已经改变了。
1、pos 位置不合法的情况
如上述图片展示出来的情况,pos 位置不能超过顺序表长度也不能是负数下标。
2、顺序表是空的情况
在当前的数组中没有任何的元素,即为顺序表是空的情况。
之前说过了,在更新元素之前要先获取到更新位置的下标,但是此时根本就没有一个元素,因此也就不可能获取到下标。
三、代码
class EmptyException extends RuntimeException { public EmptyException() { //这是一个提示顺序表为空的异常 } public EmptyException(String massage) { super(massage); } } // 更新 pos 位置的元素 public void set(int pos, int value) { if (isEmpty()) { //顺序表有可能是空的 - 抛异常来提示 //这里要注意的是此方法是用来更新的,即使是空间满了也不需要扩容 throw new EmptyException("当前顺序表为空!!!"); } //2.pos位置要合法 - 下标不为负数,不超过数组长度 if (pos < 0 || pos >= this.usedSize) { //查找位置的下标可能是负数 - 也可能超过了顺序表的长度 - 抛异常来提示 throw new PosWrongfulException("set获取元素的时候,pos位置不合法!!!"); } // 开始更新 this.elem[pos] = value; //赋值即可 } public class MyArrayList { public static void main(String[] args) { ArrayList arrayList = new ArrayList(); // 测试在顺序表末尾插入一个元素的方法 arrayList.add(1); arrayList.add(2); arrayList.add(3); // 测试在顺序表中指定位置插入一个元素 try{ arrayList.add(1, 10);//将1下标的位置插入一个10 }catch (PosWrongfulException e){ //包裹一下可能会抛出的异常 e.printStackTrace();//如果有异常会提示 } // 输出更新之前的顺序表元素 arrayList.disPlay(); System.out.println(); // 换行 // 测试 set 方法 - 将 1 下标位置的元素的值改为 100 arrayList.set(1, 100); // 打印更新之后的顺序表中的元素 arrayList.disPlay(); } }
可以看到此时 1 下标位置就成功改为了 100。
四、错误
如果 pos 位置不合法 的情况会是什么样的
// 测试 get 方法 - 将 1 下标位置的元素的值改为 100 arrayList.set(4, 100);
如上述代码所示,在 4 下标插入一个 100,因为顺序表最大的下标是 3 因此此时超过了顺序表的长度,即为不合法的情况。
可以看到此处就抛出了一个 位置不合法的异常。
如果 顺序表为空 的情况会是什么样的?
将之前写的在顺序表中插入元素的代码注释后,此时顺序表中就是空的了。
当前抛出了一个顺序表为空的异常。
到此这篇关于Java实现更新顺序表中的指定元素的示例的文章就介绍到这了,更多相关Java 更新顺序表的指定元素内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
基于Spring中的事务@Transactional细节与易错点、幻读
这篇文章主要介绍了基于Spring中的事务@Transactional细节与易错点、幻读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-11-11Spring中Controller和RestController的区别详解
这篇文章主要介绍了Spring中Controller和RestController的区别详解,@Controller是标识一个Spring类是Spring MVC controller处理器,@Controller类中的方法可以直接通过返回String跳转到jsp、ftl、html等模版页面,需要的朋友可以参考下2023-09-09详解Spring Cloud Config采用Git存储时两种常用的配置策略
这篇文章主要介绍了详解Spring Cloud Config采用Git存储时两种常用的配置策略,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-07-07Java判断object对象为空(包括null ,““)的方法
这篇文章主要介绍了Java判断对象是否为空(包括null ,“”)的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-12-12
最新评论