迭代器中的无限循环

问题描述 投票:0回答:1

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

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

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

java iterator
1个回答
4
投票

你没有推进Iterator,所以你的循环永远不会结束。

更改:

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

至:

while(itr.hasNext()){  
    System.out.println(itr.next());  
}
© www.soinside.com 2019 - 2024. All rights reserved.