[英]How can I check if an element exists at an index in a LinkedList
我有一個叫做Modul的類,並且正在將它們的元素添加到我的LinkedList中。 現在,我想編寫一個方法,在其中輸入一個Integer並檢查列表的索引處是否有一個元素或該元素是否為空。 如果有一個元素,我將返回它,如果沒有,我想返回null和錯誤消息。
我曾經考慮過使用if語句,但最終想不出一種檢查元素是否存在的方法。 現在,我想到了使用try-catch,但是我不知道需要捕獲哪種錯誤。
import java.util.LinkedList;
public class Modulhandbuch {
private String nameStudienordnung;
private LinkedList<Modul> liste;
public Modulhandbuch(String nameStudienordnung) {
this.nameStudienordnung = nameStudienordnung;
liste = new LinkedList<Modul>();
}
public void einfuegenModul(Modul m) {
liste.add(m);
}
public int anzahlModule() {
return liste.size();
}
public Modul ausgebenModul(int i) {
try {
return liste.get(i);
}catch() //I don't know what error i would need to catch
}
}
如果為該方法提供一個大於列表大小的整數值,則會得到一個空指針異常,因為此索引不存在,因此需要進行檢查。 下面的方法可以正確處理這種情況。
public Modul ausgebenModul(int i) {
if (i >= anzahlModule)
return null;
else
return liste.get(i);
}
對鏈表進行索引會浪費內存,如果您堅持要為此花費O(n)才能到達鏈表中的該索引,則可以向Node int索引添加屬性,並通過構造器Node()增加該值並進行設置實例達到該值后,在開始時刪除節點會發生什么小問題呢? 是的,很大的問題是整個列表必須重新索引,這使得從Start刪除的過程是O(1)一個O(n)操作
您可以使用技巧來為其編制索引,也可以給人一種被索引的錯覺,只是在您請求list(6)時不要這樣做,迭代器計數6個節點,這些節點從0開始並在該節點處停止
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.