Agrupar dados de um List

$F{area}+""+"("+" “+new BigDecimal(($P{perc}.doubleValue()) /($F{total}.doubleValue())*100 ).setScale(2,RoundingMode.HALF_UP)+” “+”%"+")"

preciso agrupar uma lista que contem ± isso:

area qtdeX qtdeY qtdeZ
xxxx 10 21 21
xxxx 13 15 21
xxxx 12 11 21
yyyy 10 11 21
yyyy 17 12 21
yyyy 19 16 21

onde qtdeX e qtdeY e um campo que vem calculado no bd,
portanto preciso que ao agrupar seja inserido o maior valor de qtdeX e qtdeY

teria que ficar com uma lista assim:

area qtdeX qtdeY qtdeZ
xxxx 13 21 21
yyyy 19 16 21

alguem pode ajudar,nem que for conceitualmente.
obrigado

na query que vc esta fazendo
coloca no final

“order by qtdeX, qtdeY”

pronto… ja vem ordenado

minha query:

	String hql = "select area.nome ,atendimento.dataEnvioArea ,"
				+ " registro.dataCriacao  , count(atendimento.id) , atendimento.situacaoAtendimento "
				+ " from Atendimento atendimento,AreaGestora area ,RegistroCriacao registro"
				+ " where atendimento.areaGestora.id in(:areas) "
				// + " ( atendimento.dataEnvioArea is not null "
				// + " and registro.dataCriacao is not null"
				+ " and atendimento.dataEnvioArea  between  :dataInicial and :dataFinal"
				+ " and area.id = atendimento.areaGestora.id "
				+ " and atendimento.registroCriacao.id = registro.id "
				+ " group by area.nome,atendimento.dataEnvioArea,"
				+ "	registro.dataCriacao,atendimento.situacaoAtendimento"
				+ " order by area.nome ";
	

com os resultados desta query tenho que aplicar alguns filtros ainda para depois agrupar como mostrei acima
obrigado por responder.

cara… nao to sacando a sua estrutura…
esses dados estao em algum objeto? lista? map? mais de 1 objeto???
separados… juntos… donde vem esse qtdeX e qtdeY?
tem trocentas formas de ordenação… preciso de mais informações para escolher uma q se adapte a sua estura de objetos…
saca???
axei q tava tudo numa query soh… passa ai mais informação…

tipo…
quer uma lista q tenha o objeto abaixo…

class objeto { String area; Double qtdeX, qtdeY, qtdeZ ; }

com indice ordenado por X+Y?
isso?

abrass…

Os dados estao em varias tabelas,to tentando montando um VO dos caras, o problema e que preciso agrupar este resultado,tipo
ele me retorna varias registros de uma mesma area ai preciso percorrer esta lista e agrupar por area colocando em qtdX e qtdY os maires valores para este tipo de area;
tipos isso:

area qtdeX qtdeY qtdeZ
xxxx 13 21 21
yyyy 19 16 21

onde na minha lista tenho varias areas do tipo x com valores diferentes de qtdeX e qtdeY.

Tipo nesta list se eu conseguisse pegar o indice que tivesse o maior elemento de uma determinada area ja ajudaria.