Java實(shí)現(xiàn)更新順序表中的指定元素的示例
一、思路
1.定義一個(gè) pos 變量為要更新的位置,定義一個(gè) value 變量為更新后的數(shù)值.
2.順序表不能是空的,就肯定不可以更新元素.
3.pos位置要合法,要保證 pos 位置是處在順序表范圍內(nèi)的.
4.更新功能不需要考慮擴(kuò)容,因?yàn)椴簧婕暗皆氐脑鰷p.
5.更新的之前先獲取到 pos 位置的下標(biāo),更新的時(shí)候直接將 value 賦值給 pos 位置即可.
二、圖解
當(dāng)前 pos 指向的是 2 下標(biāo),即 2 下標(biāo)就是接下來(lái)要更新元素的位置,value 等于 100,即為接下來(lái) pos 位置會(huì)更新為 100 。
更新后的圖示如下圖展示:
可以看到當(dāng)前的順序表中的元素依然是 4 個(gè)(沒(méi)有改變),但是在 2 下標(biāo)位置的元素已經(jīng)改變了。
1、pos 位置不合法的情況
如上述圖片展示出來(lái)的情況,pos 位置不能超過(guò)順序表長(zhǎng)度也不能是負(fù)數(shù)下標(biāo)。
2、順序表是空的情況
在當(dāng)前的數(shù)組中沒(méi)有任何的元素,即為順序表是空的情況。
之前說(shuō)過(guò)了,在更新元素之前要先獲取到更新位置的下標(biāo),但是此時(shí)根本就沒(méi)有一個(gè)元素,因此也就不可能獲取到下標(biāo)。
三、代碼
class EmptyException extends RuntimeException { public EmptyException() { //這是一個(gè)提示順序表為空的異常 } public EmptyException(String massage) { super(massage); } } // 更新 pos 位置的元素 public void set(int pos, int value) { if (isEmpty()) { //順序表有可能是空的 - 拋異常來(lái)提示 //這里要注意的是此方法是用來(lái)更新的,即使是空間滿了也不需要擴(kuò)容 throw new EmptyException("當(dāng)前順序表為空!?。?); } //2.pos位置要合法 - 下標(biāo)不為負(fù)數(shù),不超過(guò)數(shù)組長(zhǎng)度 if (pos < 0 || pos >= this.usedSize) { //查找位置的下標(biāo)可能是負(fù)數(shù) - 也可能超過(guò)了順序表的長(zhǎng)度 - 拋異常來(lái)提示 throw new PosWrongfulException("set獲取元素的時(shí)候,pos位置不合法?。?!"); } // 開(kāi)始更新 this.elem[pos] = value; //賦值即可 } public class MyArrayList { public static void main(String[] args) { ArrayList arrayList = new ArrayList(); // 測(cè)試在順序表末尾插入一個(gè)元素的方法 arrayList.add(1); arrayList.add(2); arrayList.add(3); // 測(cè)試在順序表中指定位置插入一個(gè)元素 try{ arrayList.add(1, 10);//將1下標(biāo)的位置插入一個(gè)10 }catch (PosWrongfulException e){ //包裹一下可能會(huì)拋出的異常 e.printStackTrace();//如果有異常會(huì)提示 } // 輸出更新之前的順序表元素 arrayList.disPlay(); System.out.println(); // 換行 // 測(cè)試 set 方法 - 將 1 下標(biāo)位置的元素的值改為 100 arrayList.set(1, 100); // 打印更新之后的順序表中的元素 arrayList.disPlay(); } }
可以看到此時(shí) 1 下標(biāo)位置就成功改為了 100。
四、錯(cuò)誤
如果 pos 位置不合法 的情況會(huì)是什么樣的
// 測(cè)試 get 方法 - 將 1 下標(biāo)位置的元素的值改為 100 arrayList.set(4, 100);
如上述代碼所示,在 4 下標(biāo)插入一個(gè) 100,因?yàn)轫樞虮碜畲蟮南聵?biāo)是 3 因此此時(shí)超過(guò)了順序表的長(zhǎng)度,即為不合法的情況。
可以看到此處就拋出了一個(gè) 位置不合法的異常。
如果 順序表為空 的情況會(huì)是什么樣的?
將之前寫(xiě)的在順序表中插入元素的代碼注釋后,此時(shí)順序表中就是空的了。
當(dāng)前拋出了一個(gè)順序表為空的異常。
到此這篇關(guān)于Java實(shí)現(xiàn)更新順序表中的指定元素的示例的文章就介紹到這了,更多相關(guān)Java 更新順序表的指定元素內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Spring監(jiān)聽(tīng)Binlog日志的方法詳解
MySQL 的二進(jìn)制日志(binlog)有三種不同的格式,通常被稱為 binlog 模式,這三種模式分別是 Statement 模式、Row 模式和Mixed 模式,本文將給大家介紹如何基于Spring監(jiān)聽(tīng)Binlog日志,需要的朋友可以參考下2024-09-09springBoot接入阿里云oss的實(shí)現(xiàn)步驟
這篇文章主要介紹了springBoot接入阿里云oss的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Apache DolphinScheduler完全設(shè)置東八區(qū)時(shí)區(qū)
這篇文章主要為大家介紹了Apache DolphinScheduler完全設(shè)置東八區(qū)配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11基于javamelody監(jiān)控springboot項(xiàng)目過(guò)程詳解
這篇文章主要介紹了基于javamelody監(jiān)控springboot項(xiàng)目過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11解決Spring Data Jpa 實(shí)體類自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)表失敗問(wèn)題
這篇文章主要介紹了解決Spring Data Jpa 實(shí)體類自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)表失敗問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09Java大數(shù)據(jù)處理的核心技術(shù)MapReduce框架
MapReduce是一種分布式計(jì)算框架,適用于大規(guī)模的數(shù)據(jù)處理。它將大數(shù)據(jù)分成多個(gè)小數(shù)據(jù)塊,通過(guò)Map和Reduce兩個(gè)階段對(duì)數(shù)據(jù)進(jìn)行處理和分析。MapReduce框架具有可靠、高效、可擴(kuò)展等特點(diǎn),已經(jīng)成為大數(shù)據(jù)處理的核心技術(shù)2023-05-05Java刪除ArrayList中的重復(fù)元素的兩種方法
在Java編程中,ArrayList是一種常用的集合類,它允許我們存儲(chǔ)一組元素,在某些情況下,我們可能需要移除其中重復(fù)的元素,只保留唯一的元素,下面介紹兩種常見(jiàn)的刪除ArrayList中重復(fù)元素的方法,需要的朋友可以參考下2024-12-12