English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In this example, we use
map
As answers with Answer and User. Here, we use both keys and values as objects. Answers have their own information, such as answerId, answer, and postedDate, and users have their own information, such as userId, username, and emailId.
Like the example before, it is an example of a forum,
A question can have multiple answers
.
Question.java
This class contains three properties, two constructors, and the displayInfo() method for displaying information.
package com.w3codebox; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.Map.Entry; public class Question { private int id; private String name; private Map<Answer,User> answers; public Question() {} public Question(int id, String name, Map<Answer, User> answers) { super(); this.id = id; this.name = name; this.answers = answers; } public void displayInfo(){ System.out.println("question id: ");+id); System.out.println("question name: ");+name); System.out.println("Answers...."); Set<Entry<Answer, User>> set = answers.entrySet(); Iterator<Entry<Answer, User>> itr = set.iterator(); while(itr.hasNext()){ Entry<Answer, User> entry = itr.next(); Answer ans = entry.getKey(); User user = entry.getValue(); System.out.println("Answer Information:"); System.out.println(ans); System.out.println("Posted By:"); System.out.println(user); } } }
Answer.java
package com.w3codebox; import java.util.Date; public class Answer { private int id; private String answer; private Date postedDate; public Answer() {} public Answer(int id, String answer, Date postedDate) { super(); this.id = id; this.answer = answer; this.postedDate = postedDate; } public String toString(){ return "Id:"+id+" Answer:"+answer+" Posted Date:"+postedDate; } }
User.java
package com.w3codebox; public class User { private int id; private String name, email; public User() {} public User(int id, String name, String email) { super(); this.id = id; this.name = name; this.email = email; } public String toString(){ return "Id:"+id+" Name:"+name+" Email Id:"+email; } }
applicationContext.xml
entries
element
of
key-ref and
value-ref Properties used to define bean references in the map.
<?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="answer1" class="com.w3codebox.Answer"> <constructor-arg value="1"></constructor-arg> <constructor-arg value="Java is a Programming Language"></constructor-arg> <constructor-arg value="12/12/2001></constructor-arg> </bean> <bean id="answer2" class="com.w3codebox.Answer"> <constructor-arg value="2"></constructor-arg> <constructor-arg value="Java is a Platform"></constructor-arg> <constructor-arg value="12/12/2003></constructor-arg> </bean> <bean id="user1" class="com.w3codebox.User"> <constructor-arg value="1></constructor-arg> <constructor-arg value="Arun Kumar"></constructor-arg> <constructor-arg value="[email protected]"></constructor-arg> </bean> <bean id="user2" class="com.w3codebox.User"> <constructor-arg value="2></constructor-arg> <constructor-arg value="Varun Kumar"></constructor-arg> <constructor-arg value="[email protected]"></constructor-arg> </bean> <bean id="q" class="com.w3codebox.Question"> <constructor-arg value="1></constructor-arg> <constructor-arg value="What is Java?"></constructor-arg> <constructor-arg> <map> <entry key-ref="answer1" value-ref="user1></entry> <entry key-ref="answer2" value-ref="user2></entry> </map> </constructor-arg> </bean> </beans>
Test.java
This class retrieves a Bean from the applicationContext.xml file and calls the displayInfo() method to display information.
package com.w3codebox; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; 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(); } }