Java 迭代器打印链接列表
我在使用foreach显示我的LinkedList时遇到问题 当我想显示我喜欢的列表时,列表中会出现一个错误,它告诉我必须使用迭代器。代码如下:Java 迭代器打印链接列表,java,linked-list,iterator,Java,Linked List,Iterator,我在使用foreach显示我的LinkedList时遇到问题 当我想显示我喜欢的列表时,列表中会出现一个错误,它告诉我必须使用迭代器。代码如下: public class Set { private LinkedList <Integer> elements; public Set () { this.elements = new LinkedList <Integer> (); } public static void main (String [] ar
public class Set {
private LinkedList <Integer> elements;
public Set () {
this.elements = new LinkedList <Integer> ();
}
public static void main (String [] args) {
Set test = new Set ();
test.add (8);
test.add (2);
test.add (7);
for (int e: test) {
}
}
public class Set {
private LinkedList <Integer> elements;
public Set () {
this.elements = new LinkedList <Integer> ();
}
public static void main (String [] args) {
Set test = new Set ();
test.add (8);
test.add (2);
test.add (7);
Iterator <Integer> iterator = test.iterator ();
while (iterator.hasNext ()) {
System.out.println (iterator.next ());
}
}
公共类集合{
私有链接列表元素;
公共集(){
this.elements=newlinkedlist();
}
公共静态void main(字符串[]args){
集合测试=新集合();
试验。添加(8);
测试。添加(2);
测试。添加(7);
用于(int e:测试){
}
}
所以我使用了一个迭代器来显示,但是有一条消息告诉我,我的迭代器对于方法集是未定义的
代码如下:
public class Set {
private LinkedList <Integer> elements;
public Set () {
this.elements = new LinkedList <Integer> ();
}
public static void main (String [] args) {
Set test = new Set ();
test.add (8);
test.add (2);
test.add (7);
for (int e: test) {
}
}
public class Set {
private LinkedList <Integer> elements;
public Set () {
this.elements = new LinkedList <Integer> ();
}
public static void main (String [] args) {
Set test = new Set ();
test.add (8);
test.add (2);
test.add (7);
Iterator <Integer> iterator = test.iterator ();
while (iterator.hasNext ()) {
System.out.println (iterator.next ());
}
}
公共类集合{
私有链接列表元素;
公共集(){
this.elements=newlinkedlist();
}
公共静态void main(字符串[]args){
集合测试=新集合();
试验。添加(8);
测试。添加(2);
测试。添加(7);
迭代器迭代器=test.Iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
如果你能帮我的话,那将对我有很大帮助
(我试图在Set()public中定义“Iterator Iterator=this.elements.Iterator();
”,并以这种方式手动调用它,但没有成功“while(Iterator.hasNext()){
System.out.println(iterator.next());
}
”)
提前感谢您,祝您愉快您的类
集合
没有定义迭代器,您应该添加一个类似于该迭代器的方法:
public Iterator<Integer> getIterator() {
return elements.iterator();
}
公共迭代器getIterator(){
返回元素。迭代器();
}
您的Set类需要实现iterable接口,如下所示
public class Set implements Iterable<Integer> {
private LinkedList<Integer> elements;
public Set() {
this.elements = new LinkedList<Integer>();
}
@Override
public Iterator<Integer> iterator() {
return elements.iterator();
}
}
公共类集实现Iterable{
私有链接列表元素;
公共集(){
this.elements=新的LinkedList();
}
@凌驾
公共迭代器迭代器(){
返回元素。迭代器();
}
}
已经有一个Set
接口。请重命名你的类。这很混乱。你想实现什么?你有一个名为Set的类,你在里面使用LinkedList,为什么?你为什么不使用HashSet作为例子?@Michael Dz,因为LinkedList的使用是强加给Mean的,你认为任何包含某个集合的类都是i默认情况下可以吗?谢谢你的回答;)谢谢你的回答,我会尝试。因此,要显示我没有在主菜单中创建“System.out.println(iterator(test));”的元素,System.out.println(iterator.next());
将起作用。您还可以使用test.forEach(System.out::println);
正如@Hülya所提到的。我想解释一下原因,所以我使用了迭代器来显示,但有一条消息告诉我,我的迭代器对于方法集是未定义的。@ValentinLemains如果对您有效,您能接受这个答案吗。