我有一个名为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
}
}
答案 0 :(得分:1)
如果为该方法提供一个大于列表大小的整数值,则会得到一个空指针异常,因为此索引不存在,因此需要检查该值。下面的方法可以正确处理这种情况。
public Modul ausgebenModul(int i) {
if (i >= anzahlModule)
return null;
else
return liste.get(i);
}
答案 1 :(得分:0)
索引链表是浪费内存,如果您坚持要花O(n)来获取链表中的该索引,则可以向Node int索引添加属性,并通过构造器Node()增加它并将该实例设置为该值,现在在开始删除节点时会发生什么问题呢?是的,很大的问题必须重新索引整个列表,这使得从Start删除的过程是O(1)的O(n)操作
您可以做一个技巧来为其编制索引,或者给您一种被索引的错觉,只是在您请求list(6)时不要这么做,迭代器从6个节点开始,这些节点从0开始并在该节点处停止