2010-01-27 3 views
2

정수로 구문 분석하는 쿼리의 ID 번호 값을 보유하는 String을가집니다. 쿼리에 다섯 번 이상 특정 숫자가 나타날 때마다 확인하는 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하고 나는,이 값을 설정 PIDM에 MIUD을 분석하고 문하지만 난 거기에서 갈 곳 확실히 모르겠습니다.

답변

1

그냥 만들 찾고 통해, 그리고 루프를

Integer count = map.get(PIDM); 
if(count == null) 
    map.put(PIDM, 1); 
else 
    map.put(PIDM, count + 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"); 

와 함께

후 최고의 그냥 한 번 JSP에 표시 할 수 있도록 Map<Integer, List<Ticket>>Map<Integer, Integer> 또는 어쩌면 더 나은를 사용하는 것이 참으로 또는 JSTL c:forEach을 잘 사용하십시오. 그런 다음 JSTL fn:length을 사용하여 List<Ticket> 크기를 가져올 수 있습니다.

예.

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

결과의 모든 레코드에 대해이 작업을 수행는 5 카운트 이상

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