Java 迭代器打印链接列表

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

我在使用foreach显示我的LinkedList时遇到问题

当我想显示我喜欢的列表时,列表中会出现一个错误,它告诉我必须使用迭代器。代码如下:

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如果对您有效,您能接受这个答案吗。