Agrupar valores de um ArrayList

3 respostas
A
Pessoal, tenho uma lista de datas semelhantes que me retornam em um arrayList:
public List<MassagemBean> getListaDias() throws SQLException{
		PreparedStatement stmt = this.con.prepareStatement("select dia from massagem group by dia desc");
		ResultSet rs = stmt.executeQuery();
		
		List<MassagemBean> ldia = new ArrayList<MassagemBean>();
		
		if (rs.next()==false){
			return null;
		}
		
		while (rs.next()){
			MassagemBean mb = new MassagemBean();
			mb.setData(rs.getString("dia"));
			
			ldia.add(mb);
		}
		
		stmt.close();
		rs.close();
		
		return ldia;
	}

ele me retorna isso, porém descobri que o group by não serve de nada na hora da exibição, ele mostra todos os valores que estão dentro da tabela.

como eu posso agrupar esses valores, que são datas iguais, para exibir somente o valor? por exemplo, tenho 30 reservas no dia 12/10/2012, ou seja, existem 30 valores na base com essa data constando, que será o link, porém ao invés de aparecer a data 12/10/2012 30x aparecerá somente 12/10/2012 uma única vez.

meu código para exibir os valores da consulta acima é este:
<% 
		Massagem dao = new Massagem();
		
		List<MassagemBean> datas = dao.getListaDias();
		
		String dataCorrente = "";
		
		for (MassagemBean mb : datas){			
	%>
		<li style="list-style: none"><a href="ListaCorresp.jsp"><%=mb.getData() %></a></li>
	<%
		}
	%>

vlw pessoal

3 Respostas

P

cara, como assim seu group by não funciona?
qual banco? que tipo ele é?
alem de armazenar a data, ele tem a hora?

P

cara, dá uma olhada nesse aqui…

http://www.guj.com.br/posts/list/147914.java#799815

Usando Set você conseguirá, mas tem implementar seu “equals” da classe MassagemBean com o atributo settado pelo método “setData”.

A

A base é MySQL, fiz uma gambiarra que funcionou kkkk

segue o código:

<% 
		Massagem dao = new Massagem();
		
		List<MassagemBean> datas = dao.getListaDias();
		String diaAnterior = "";
		String diaAgora = "";
		if (datas == null){
		%>
			<li style="list-style: none"><a href="ListaCorresp.jsp">Nenhuma Prevista</a></li>
		<%
		} else {		

			for (MassagemBean mb : datas){
			
			
			diaAgora = mb.getData();
			if (diaAgora.equals(diaAnterior)) continue;
			if (diaAgora.equals(diaAnterior)) break;
		
	%>	
				<li style="list-style: none"><a href="ListaCorresp.jsp"><%=diaAgora %></a></li>
	<%
			diaAnterior = diaAgora;
			}
		} 
	%>

tive que improvisar rs
vou dar uma olhada no q tu me passou paulo.

vlw a atenção pessoal.

Criado 9 de abril de 2010
Ultima resposta 9 de abr. de 2010
Respostas 3
Participantes 2