Boa tarde.
Tenho um sistema de registro de apostas.
Estou precisando gerar ao final do relatório de apostas as dezenas mais apostadas em ordem decrescente. Porem não estou conseguindo pensar em como resolver este problema.
Iniciei algo assim
SortedMap<Integer, List><Integer>> mapTemp = new TreeMap<Integer, List><Integer>>();
for (Aposta aposta : listAposta) {
if (Utils.isNotObjValid(mapTemp.get(Integer.parseInt(aposta.getDezena1())))) {
List<Integer> list = new ArrayList<Integer>();
list.add(Integer.parseInt(aposta.getDezena1()));
mapTemp.put(Integer.parseInt(aposta.getDezena1()), list);
} else {
mapTemp.get(Integer.parseInt(aposta.getDezena1())).add(Integer.parseInt(aposta.getDezena1()));
}
if (Utils.isNotObjValid(mapTemp.get(Integer.parseInt(aposta.getDezena2())))) {
List<Integer> list = new ArrayList<Integer>();
list.add(Integer.parseInt(aposta.getDezena2()));
mapTemp.put(Integer.parseInt(aposta.getDezena2()), list);
} else {
mapTemp.get(Integer.parseInt(aposta.getDezena2())).add(Integer.parseInt(aposta.getDezena2()));
}
if (Utils.isNotObjValid(mapTemp.get(Integer.parseInt(aposta.getDezena3())))) {
List<Integer> list = new ArrayList<Integer>();
list.add(Integer.parseInt(aposta.getDezena3()));
mapTemp.put(Integer.parseInt(aposta.getDezena3()), list);
} else {
mapTemp.get(Integer.parseInt(aposta.getDezena3())).add(Integer.parseInt(aposta.getDezena3()));
}
if (Utils.isNotObjValid(mapTemp.get(Integer.parseInt(aposta.getDezena4())))) {
List<Integer> list = new ArrayList<Integer>();
list.add(Integer.parseInt(aposta.getDezena4()));
mapTemp.put(Integer.parseInt(aposta.getDezena4()), list);
} else {
mapTemp.get(Integer.parseInt(aposta.getDezena4())).add(Integer.parseInt(aposta.getDezena4()));
}
if (Utils.isNotObjValid(mapTemp.get(Integer.parseInt(aposta.getDezena5())))) {
List<Integer> list = new ArrayList<Integer>();
list.add(Integer.parseInt(aposta.getDezena5()));
mapTemp.put(Integer.parseInt(aposta.getDezena5()), list);
} else {
mapTemp.get(Integer.parseInt(aposta.getDezena5())).add(Integer.parseInt(aposta.getDezena5()));
}
if (Utils.isNotObjValid(mapTemp.get(Integer.parseInt(aposta.getDezena6())))) {
List<Integer> list = new ArrayList<Integer>();
list.add(Integer.parseInt(aposta.getDezena6()));
mapTemp.put(Integer.parseInt(aposta.getDezena6()), list);
} else {
mapTemp.get(Integer.parseInt(aposta.getDezena6())).add(Integer.parseInt(aposta.getDezena6()));
}
}
Parei ai, não sei por onde ir.
Ainda tenho mais um problema.
Gostaria de gerar o relatorio com o titulo da dezena e abaixo a quantidade. Estou usando itext (não tenho problemas nele), somente na logica do problema.
Ex.
(celular titulo) "Dezena" + mapTemp.getAlgumaCoisa()
(celular quantidade) mapTemp.getAlgumaCoisa()
A ideia seria a cada 6 uma quebra de linha para novo titulo.
Alguem tem uma ideia?