Java實現(xiàn)更新順序表中的指定元素的示例
一、思路
1.定義一個 pos 變量為要更新的位置,定義一個 value 變量為更新后的數(shù)值.
2.順序表不能是空的,就肯定不可以更新元素.
3.pos位置要合法,要保證 pos 位置是處在順序表范圍內的.
4.更新功能不需要考慮擴容,因為不涉及到元素的增減.
5.更新的之前先獲取到 pos 位置的下標,更新的時候直接將 value 賦值給 pos 位置即可.
二、圖解
當前 pos 指向的是 2 下標,即 2 下標就是接下來要更新元素的位置,value 等于 100,即為接下來 pos 位置會更新為 100 。
更新后的圖示如下圖展示:
可以看到當前的順序表中的元素依然是 4 個(沒有改變),但是在 2 下標位置的元素已經改變了。
1、pos 位置不合法的情況
如上述圖片展示出來的情況,pos 位置不能超過順序表長度也不能是負數(shù)下標。
2、順序表是空的情況
在當前的數(shù)組中沒有任何的元素,即為順序表是空的情況。
之前說過了,在更新元素之前要先獲取到更新位置的下標,但是此時根本就沒有一個元素,因此也就不可能獲取到下標。
三、代碼
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位置要合法 - 下標不為負數(shù),不超過數(shù)組長度 if (pos < 0 || pos >= this.usedSize) { //查找位置的下標可能是負數(shù) - 也可能超過了順序表的長度 - 拋異常來提示 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實現(xiàn)更新順序表中的指定元素的示例的文章就介紹到這了,更多相關Java 更新順序表的指定元素內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Apache DolphinScheduler完全設置東八區(qū)時區(qū)
這篇文章主要為大家介紹了Apache DolphinScheduler完全設置東八區(qū)配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11基于javamelody監(jiān)控springboot項目過程詳解
這篇文章主要介紹了基于javamelody監(jiān)控springboot項目過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-11-11解決Spring Data Jpa 實體類自動創(chuàng)建數(shù)據(jù)庫表失敗問題
這篇文章主要介紹了解決Spring Data Jpa 實體類自動創(chuàng)建數(shù)據(jù)庫表失敗問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09Java大數(shù)據(jù)處理的核心技術MapReduce框架
MapReduce是一種分布式計算框架,適用于大規(guī)模的數(shù)據(jù)處理。它將大數(shù)據(jù)分成多個小數(shù)據(jù)塊,通過Map和Reduce兩個階段對數(shù)據(jù)進行處理和分析。MapReduce框架具有可靠、高效、可擴展等特點,已經成為大數(shù)據(jù)處理的核心技術2023-05-05