2010-01-27 68 views
2

我有一個字符串,它保存來自我正在解析爲整數的查詢中的ID號碼的值。我需要一個FOR循環來檢查每次查詢中出現的特定數字超過五次。我在JSP頁面上顯示這些信息。 到目前爲止,我有:使用FOR循環捕獲相同數字的倍數

while (rs1.next()){ 
      String TicketNumber = rs1.getString("XXXXX_XXXXX_NO"); 
      String MUID = rs1.getString("XXXXXX_XXXX"); 
      String Name = rs1.getString("XXXXXXX_XXXXX_NAME"); 
      String LastName = rs1.getString("XXXXX_XXXX_NAME"); 
      int PIDM = Integer.parseInt(MUID); 
     for (int n = 0, n >= 5, n += 1) 

RS1是我quering,我設置這些值,解析出MIUD到馬存保機構的發言,但我不太清楚從哪裏裏去。

回答

1

只是要使用功能強大的aggregate functions SQL爲您提供該區域:

SELECT muid, COUNT(muid) AS muid_count FROM ticket GROUP BY muid 

結合

Integer muid = resultSet.getInt("muid"); 
Integer muidCount = resultSet.getInt("muid_count"); 

或者,如果你在非聚集的信息實際上有興趣的話,最好是確實使用Map<Integer, Integer>也許更好Map<Integer, List<Ticket>>這樣就可以剛剛在JSP顯示它一次很好地使用JSTL c:forEach。您可以使用JSTL fn:length獲得List<Ticket>的尺寸。

E.g.

<c:forEach items="${ticketMap}" var="ticketEntry"> 
    MUID: ${ticketEntry.key}<br> 
    Ticket count: ${fn:length(ticketEntry.value)}<br> 
    All tickets:<br> 
    <c:forEach items="${ticketEntry.value}" var="ticket"> 
     Number: ${ticket.number}<br> 
     Name: ${ticket.name}<br> 
     Lastname: ${ticket.lastName}<br> 
    </c:forEach> 
    <hr> 
</c:forEach> 
0

使用地圖來計算每個數字出現的次數。

Map<Integer,Integer> map = new HashMap<Integer,Integer>() 

執行此操作在結果中的每個記錄集

Integer count = map.get(PIDM); 
if(count == null) 
    map.put(PIDM, 1); 
else 
    map.put(PIDM, count + 1); 

隨後,查詢完成後,遍歷查找的5計數或更大

for(Map.Entry<Integer,Integer> e : map.entrySet()) 
{ 
    if(e.getValue() > 5) 
    { 
     // do something with e.getKey() which is the PIDM from above 
    } 
}