Jos*_*hua 5 java iterator linked-list
我用的是Java.
我已经有一个名为"Subject"的自定义对象的类.
我有另一个类只包含Subject对象的链接列表.(称为subjectList)
我在subjectsList类中编写了一个方法(称为"getSubject()"),用于返回链接列表中特定索引处的Subject对象.为此,我使用了ListIterator.我将在LinkedList中的给定索引处创建一个ListIterator,并使用.next()方法.
但是,ListIterator中的.next()方法只返回java.lang.Object,即使我希望它返回一个Subject对象.
如何让ListIterator.next()返回Subject对象?
我已经尝试向下转向主题,但这似乎失败了,我读到某个地方,你不能低估无关的对象.
这是我的subjectList类:
import java.util.*;
public class subjectsList
{
//my LinkedList of Subject objects and a ListIterator
private LinkedList<Subject> l;
private ListIterator itr;
//constructor that simply creates a new empty LinkedList
public subjectsList()
{
l = new LinkedList();
}
//Method to return the Subject object at a specific index in the LinkedList
public Subject getSubject( byte index )
{
itr = l.listIterator( index );
return itr.next();
}
//Method to add a new Subject object to the LinkedList
public void addSubject( String nameInput, byte levelInput )
{
l.addLast( new Subject( nameInput, levelInput ) );
}
//Method to remove the Subject object at a specific index in the LinkedList
public void removeSubject( byte index )
{
itr = l.listIterator( index );
itr.next();
itr.remove();
}
}
Run Code Online (Sandbox Code Playgroud)
有问题的方法是"getSubject()"方法.
您需要将迭代器声明为:
private ListIterator<Subject> itr;
Run Code Online (Sandbox Code Playgroud)
还要在构造函数中按如下方式创建LinkedList对象:
l = new LinkedList<Subject>();
Run Code Online (Sandbox Code Playgroud)
您还可以在返回时将其强制转换为主题,因为您的列表仅存储Subject对象.但如前所述,定义Iterator会更好.
public Subject getSubject( byte index )
{
itr = l.listIterator( index );
return (Subject)itr.next();
}
Run Code Online (Sandbox Code Playgroud)
除了你的问题,我在你的代码中看到了命名约定问题.最好是遵循它并做一个习惯.
注意:在Eclipse IDE中尝试您的示例后,我对我的答案进行了更改.我建议你使用IDE,因为它也会告诉你有关这些事情的警告.
你可以使用你的通用性ListIterator
.
private ListIterator<Subject> itr;
Run Code Online (Sandbox Code Playgroud)
现在itr.next()
回归科目.
资源:
PS:我建议你改变你的实例LinkedList
为l = new LinkedList<Subject>();
归档时间: |
|
查看次数: |
7343 次 |
最近记录: |