user2482323
user2482323

Reputation: 129

Retrieving List inside the hashmap.

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

Answers (2)

Rajesh Acharya
Rajesh Acharya

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

Prasad Kharkar
Prasad Kharkar

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

Related Questions