簡體   English   中英

如何檢查LinkedList中的索引處是否存在元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM