我正在尝试学习集合的构造函数注入。我的问题类如下。

public class Question {
private int id;
private String name;
private List<String> answers;

public Question() {}
public Question(int id, String name, List<String> answers) {
    super();
    this.id = id;
    this.name = name;
    this.answers = answers;
}

public void displayInfo(){
    System.out.println(id+" "+name);
    System.out.println("answers are:");
    Iterator<String> itr=answers.iterator();
    while(itr.hasNext()){
        System.out.println(itr);
    }
}

}


我的测试课程如下。

public class Test {
public static void main(String[] args) {
    Resource r=new ClassPathResource("applicationContext.xml");
    BeanFactory factory=new XmlBeanFactory(r);

    Question q=(Question)factory.getBean("q");
    q.displayInfo();

}
}


这是我的applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<bean id="q" class="DependencyInjection.Question">
<constructor-arg value="111"></constructor-arg>
<constructor-arg value="What is java?"></constructor-arg>
<constructor-arg>
<list>
<value>Java is a programming language</value>
<value>Java is a Platform</value>
<value>Java is an Island of Indonasia</value>
</list>
</constructor-arg>
</bean>

</beans>


输出如下。


  java.util.AbstractList$Itr@15aaf0b3
  java.util.AbstractList$Itr@15aaf0b3
  java.util.AbstractList$Itr@15aaf0b3
  java.util.AbstractList$Itr@15aaf0b3
  java.util.AbstractList$Itr@15aaf0b3
  java.util.AbstractList$Itr@15aaf0b3
  java.util.AbstractList$Itr@15aaf0b3
  java.util.AbstractList$Itr@15aaf0b3
  java.util.AbstractList$Itr@15aaf0b3
  java.util.AbstractList$Itr@15aaf0b3
  java.util.AbstractList$Itr@15aaf0b3
  java.util.AbstractList$Itr@15aaf0b3
  java.util.AbstractList$Itr@15aaf0b3


这是无限循环。我该如何解决这个问题?

最佳答案

您没有推进Iterator,因此循环永远不会结束。

更改:

while(itr.hasNext()){
    System.out.println(itr);
}


至:

while(itr.hasNext()){
    System.out.println(itr.next());
}

关于java - 迭代器中的无限循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54863334/

10-11 22:50
查看更多