简体   繁体   English

迭代器中的无限循环

[英]Infinite loop in iterator

I'm trying to learn constructor injection with collections. 我正在尝试学习集合的构造函数注入。 My Question class as below. 我的问题类如下。

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);  
    }  
}  

}  

My Test class as below. 我的测试课程如下。

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();  

}  
} 

This is my applicationContext.xml 这是我的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> 

Out put as below. 输出如下。

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.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

This is infinite loop. 这是无限循环。 How can I solve this issue? 我该如何解决这个问题?

You are not advancing the Iterator , so your loop never ends. 您没有推进Iterator ,因此循环永远不会结束。

Change: 更改:

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

to: 至:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM