Reputation: 129
I am trying to retrieve the List values from my hashmap but it is displaying com.action.ReportClass@10da25f. Here ReportClass is Pojo class where i set my resultset data in it.
package com.pkg;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class JanuaryAction {
private String from; // creating variables to access input values.
private String to; // creating variables to access input values.
Map abc1 = new HashMap(); // Getting the map objects to store tha values
public Map getAbc1() { /* Creating the setters and getters */
return abc1;
}
public void setAbc1(Map abc1) {
this.abc1 = abc1;
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public Map<String, String> getAbc() {
return abc;
}
public void setAbc(Map<String, String> abc) {
this.abc = abc;
}
Map<String, String> abc = new HashMap<String, String>();
Map<String, List<ReportClass>> map = new HashMap<String, List<ReportClass>>(); // Using
// Map
// interface
// implementing
// hashmap
public Map<String, List<ReportClass>> getMap() {
return map;
}
public void setMap(Map<String, List<ReportClass>> map) {
this.map = map;
}
public String execute() throws Exception {
String fromdate = getFrom();
System.out.println(fromdate);
String todate = getTo();
System.out.println(todate);
Connection con = GetCon.getCon();
Statement statement = con.createStatement();
ResultSet resultset = statement
.executeQuery("SELECT MarketPlace,OrderDate, ROUND(SUM(Total),2), COUNT(*) , ROUND(ROUND(SUM(Total),2)/ COUNT(*),2) FROM vend_printed WHERE OrderDate >='"
+ fromdate + "' AND OrderDate <='" + todate + "' GROUP BY OrderDate,MarketPlace");
while (resultset.next()) {
String marketplace = resultset.getString(1);// get the first column
// in marketplace
String orderdate = resultset.getString(2);// get the second column
// in orderdate
Double datamount = resultset.getDouble(3);// get the third column in
// datamount
Integer count = resultset.getInt(4);// get the fourth column in
// count
Double result = resultset.getDouble(5); // get the fifth column in
// result
ReportClass a = new ReportClass(); // create an object to access
// pojo class.
a.setMarketplace(marketplace); // setting the values in pojo class
a.setOrderdate(orderdate);
a.setDataamount(datamount);
a.setCount(count);
a.setResult(result);
if (map.get(marketplace) != null) { // if the value in marketplace
// is null then go to else
// statement or go to if
// statement.
map.get(marketplace).add(a); // using the key add one complete
// row values from a to
// marketplace
} else {
List<ReportClass> optionsVO = new ArrayList<ReportClass>(); // create
// a
// list
// optionsVo
optionsVO.add(a); // store Reportclass values in List.
map.put(marketplace, optionsVO); // storing it in map.
/* System.out.println(map.get(marketplace).toString()); */
}
}
Set s = map.entrySet(); // A map entry (key-value pair).creating Set
// interface.
Iterator i = s.iterator();
while (i.hasNext()) {
List<ReportClass> tempList = (List<ReportClass>) ((Entry) i.next()).getValue(); // creating
// a
// temporary
// list
for (ReportClass reportClassObj : tempList) {
System.out.println(reportClassObj.getMarketplace());// display
// values.
System.out.println(reportClassObj.getDataamount());
System.out.println(reportClassObj.getOrderdate());
System.out.println(reportClassObj.getCount());
System.out.println(reportClassObj.getResult());
}
}
/* System.out.println(map.size()); */
return "success";
}
}
in my jsp i have a code.
<s:iterator var="studentEntry" status="stat" value="map.entrySet()">
Student Key: <s:property value="%{#studentEntry.getKey()}"/>
Student Value: <s:property value="%{#studentEntry.getValue()}"/><br>
</s:iterator>
Upvotes: 0
Views: 755
Reputation: 215
use this in your reportclass
@Override
public String toString() {
return "orderdate is: " +orderdate+ ", No of order is: "+dataamount+ ", Total Order is: " +count+ ", Reuslt is: "+result;
}
}
Upvotes: 2
Reputation: 13576
You are directly printing ReportClass
object and it prints hashcode value of it. you need to override toString()
method of the class to get the meaningful textual representation of the object.
I guess you are using eclipse. Just right click on the editor and click override toString
. There you can select which fields to put in representation.
Here is an example.
package com.compare;
public class Person {
private String firstName;
private String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Override
public String toString() {
return "Person [firstName=" + firstName + ", lastName=" + lastName
+ "]";
}
public static void main(String [] args){
Person person = new Person();
person.setFirstName("Prasad");
person.setLastName("kharkar");
System.out.println(person);
}
}
This will generate following output.
Person [firstName=Prasad, lastName=kharkar]
Upvotes: 2