Java 链表-删除索引中的元素
我正在为我的OOP类处理一个链表赋值,并且在使用remove方法时遇到了一些问题。我们的教授要求我们写一个方法:Java 链表-删除索引中的元素,java,linked-list,Java,Linked List,我正在为我的OOP类处理一个链表赋值,并且在使用remove方法时遇到了一些问题。我们的教授要求我们写一个方法: public Object removeElement(int index) 这将获取一个索引,该索引是需要删除的元素的位置。它还必须返回已删除节点包含的数据。但是,我很难让方法返回它正在删除的对象。由于某种原因,我一直得到这样一个错误,即该方法必须返回object类型的结果。我让它返回一个对象,我在不同的地方经历了反复试验,但没有成功。 这是我的密码: public Objec
public Object removeElement(int index)
这将获取一个索引,该索引是需要删除的元素的位置。它还必须返回已删除节点包含的数据。但是,我很难让方法返回它正在删除的对象。由于某种原因,我一直得到这样一个错误,即该方法必须返回object类型的结果。我让它返回一个对象,我在不同的地方经历了反复试验,但没有成功。
这是我的密码:
public Object removeElement(int index)
{
ListIterator iterator = listIterator();
Object object;
//If the supplied index is less than zero, throw an exception.
if(index < 0)
{
IndexOutOfBoundsException ex = new IndexOutOfBoundsException();
throw ex;
}
else
{
for(int i = 0; i <= index; i++)
{
if(!iterator.hasNext())
{
IndexOutOfBoundsException ex = new IndexOutOfBoundsException();
throw ex;
}
else
{
if(i == index)
{
object = iterator.next();
iterator.remove();
return object;
}
else
{
iterator.next();
}
}
}
}
公共对象移除元素(int索引)
{
ListIterator迭代器=ListIterator();
对象对象;
//如果提供的索引小于零,则引发异常。
如果(指数<0)
{
IndexOutOfBoundsException ex=新的IndexOutOfBoundsException();
掷骰子;
}
其他的
{
对于(int i=0;i如果i==index
,则返回一个对象。但是编译器不知道循环实际上总是在该点结束。它查看循环的底部,并思考“如果我们到了这里,我们想要返回什么?”
实际上,我会将您的代码重组为:
if (index < 0)
{
// No need for a separate variable
throw new IndexOutOfBoundsException();
}
// No need for an else block
ListIterator iterator = listIterator();
Object current = null;
for (int i = 0; i <= index; i++)
{
// Note: assuming you expose the size(), you could check this up front...
if(!iterator.hasNext())
{
throw new IndexOutOfBoundsException();
}
current = iterator.next();
}
iterator.remove();
return current;
if(索引<0)
{
//不需要单独的变量
抛出新的IndexOutOfBoundsException();
}
//不需要其他块
ListIterator迭代器=ListIterator();
对象当前=空;
对于(int i=0;i如果i==index
,则返回一个对象。但是编译器不知道循环实际上总是在该点结束。它查看循环的底部,并思考“如果我们到了这里,我们想要返回什么?”
实际上,我会将您的代码重组为:
if (index < 0)
{
// No need for a separate variable
throw new IndexOutOfBoundsException();
}
// No need for an else block
ListIterator iterator = listIterator();
Object current = null;
for (int i = 0; i <= index; i++)
{
// Note: assuming you expose the size(), you could check this up front...
if(!iterator.hasNext())
{
throw new IndexOutOfBoundsException();
}
current = iterator.next();
}
iterator.remove();
return current;
if(索引<0)
{
//不需要单独的变量
抛出新的IndexOutOfBoundsException();
}
//不需要其他块
ListIterator迭代器=ListIterator();
对象当前=空;
对于(int i=0;i请发布listIterator()方法实现和您收到的错误消息。
注意:>您必须使用一个类变量(如整数)来管理列表的大小。因此,您不必使用check!iterator.hasNext(),而是将索引与当前大小进行比较。请发布listIterator()方法实现和您收到的错误消息。
注意:>您必须使用一个类变量(如整数)来管理列表的大小。因此您不必使用check!iterator.hasNext(),而是将索引与当前大小进行比较。首先不要使用java LinkedList中的迭代器,我想教授想看看如何实现数据结构的删除功能
其次,在这里做一个循环和条件,其中i+1==index
,保存当前元素以返回,比如Node returnElement=curent.next;
并进行删除操作curent.next=curent.next;
首先不要使用java LinkedList中的迭代器,我想教授想看看你们是如何实现的删除数据结构的功能
其次,在此处进行循环并设置条件,其中i+1==index
,保存当前元素以返回,如Node returnElement=curent.next;
并进行删除操作curent.next=curent.next.next;
错误是否给出了行号?完整的错误消息是什么?错误不是在编译时出现的,而是在我编译之前的方法中。@DanielPikul:这实际上是一个编译错误。这只是您的IDE基本上按照您键入的方式编译。我在这里30分钟学到的东西比我在13周的课堂上学到的要多。:)我从来都不知道该怎么称呼它。错误是否给出了行号?完整的错误信息是什么?错误不在编译时,而是在我编译之前的方法中。@DanielPikul:这实际上是一个编译错误。它只是你的IDE基本上按照你键入的方式编译。我在这里30分钟学到的东西比我在13周的cla中学到的要多学生:)我从来都不知道该怎么称呼它。那我怎么才能修复它呢?我有一个方法,如果它没有到达它,就会抛出一个异常,我希望它能处理好。好的,我很快就比较了它们。太好了!谢谢!!!我实际上保留了我的代码,只是最初将对象设置为null,并在循环之外写了一个返回行。你的代码当然更简单,也帮助我思考了一下。那我怎么解决呢?我有一个方法,如果达不到它,就会抛出一个异常,我希望它能解决。好的,我正在快速比较它们。太好了!谢谢!!!我实际上保留了我的代码,只是最初将对象设置为null,并在外部写了一个返回行循环。你的代码肯定要简单得多,并帮助我思考了一下。LinkedList没有存储的大小索引,即ArrayList。我必须使用hasNext();LinkedList没有大小?那是什么?这是我们在这门课上不允许使用的东西。我们使用的是我们的教授编写的自定义LinkedList子集。我应该澄清一下。@DanielPikul-不用担心…只是想知道我是不是疯了一会儿;-)是的,但您已使用Index删除元素。它不应该是。remove(element)方法应该只在那里。请参阅java.util.LinkedListLinkedList没有存储的大小索引,即ArrayList。我必须使用hasNext();LinkedList没有大小?那是什么?这是我们在这门课上不允许使用的东西。我们使用的是我们的教授编写的自定义LinkedList子集。我应该澄清一下。@DanielPikul-不用担心…只是想知道我是不是疯了;-)是的,但你使用了索引来删除元素。它不应该是。remove(Element)方法应该只在那里。请参考java.util.LinkedList