繁体   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