2013-06-27 40 views
0

我想从我的散列表检索列表值,但它显示[email protected]。这里ReportClass是Pojo类,我在其中设置了我的结果集数据。在散列表内部检索列表。

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

在我的jsp我有一个代码。

<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> 
+0

你需要覆盖'ReportClass'的'toString'方法。 –

+0

如果您能向我展示一个示例,我将会为您推荐 – user2482323

+0

您能否使用我编写的上述内容进行Google搜索?搜索'“覆盖Java中的toString”' –

回答

2

使用这个在您的reportclass

@Override 
public String toString() { 
    return "orderdate is: " +orderdate+ ", No of order is: "+dataamount+ ", Total Order is: " +count+ ", Reuslt is: "+result; 
} 

} 
+0

谢谢。它的工人 – user2482323

2

您直接打印ReportClass对象,它会打印它的哈希码值。您需要覆盖该类的toString()方法以获取对象的有意义的文本表示形式。

我猜你正在使用eclipse。只需右键单击编辑器并单击override toString。在那里你可以选择代表哪个字段。

这里是一个例子。

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

    } 

} 

这将生成以下输出。

Person [firstName=Prasad, lastName=kharkar] 
+0

我很高兴我可以帮助:) –

+0

你能告诉我如何实现我的情况。我无法弄清楚如何去做。 – user2482323