Olá, estou com precisando repetir o elemento de um ArrayLista quantas vezes que o código for repetido no parâmetro. Recebo os parâmetros em uma String dessa forma: “978,100,400,400,300,994,994,994”. Podemos observar que o código 994 se repete 3 vezes, o 400 repete 2 e os demais 1.
O Problema:
Preciso fazer a contagem dos parâmetros e fazer os elementos do ArrayLista duplicar, triplicar, quadruplicar de acordo com a quantidade e depois eu envio essa lista para um JRBeanCollectionDataSource, que será enviado ao Ireport e gerado etiquetas
com os endereços de algumas empresas.
Preciso só de fazer esse tratamento, abaixo parte do código.
public void gerarEtiqueta(Declaracao declaracao) {
CustomerDao dao = new CustomerDao();
ArrayList<Empresa> listaEmpresa = new ArrayList<Empresa>();
listaEmpresa = dao.capituraEnderecoEmpresa(declaracao); // Array List com endereço
Map<String, String> parametros = new HashMap<String, String>();
parametros.put("listaContrato", declaracao.getListaContrato()); // Parametros getListaContrato()
/*TRATAMENTO DOS PARAMENTROS*/
/*
String s = declaracao.getListaContrato();
String[] t = s.split (Pattern.quote (","));
int a = 0;
NumberFormat format = new DecimalFormat("0000");
for(int i=0; i < t.length; i++){
a = Integer.parseInt(t[i].replaceAll("'", ""));
String formatado = format.format(a);
System.out.println(formatado);
}*/
JRBeanCollectionDataSource jd = new JRBeanCollectionDataSource(listaEmpresa);
Conexao conexao = new Conexao();
String arquivo = "EtiquetasEmpresa";
try{
new RelatorioPdt().gerar(arquivo, parametros, jd);
}catch (Exception e) {
e.printStackTrace();
}finally{
conexao.fechaConexao();
}
}
public void gerar(String arquivo, Map<String, String> parametros, JRBeanCollectionDataSource jd) throws JRException {
//executa o relatório
JasperPrint impressao = null;
try {
impressao = JasperFillManager.fillReport("C:\\InfoMed\\unicentro\\outros\\"+arquivo+".jasper", parametros, jd);
} catch (JRException e) {
throw e;
}
//exibe o resultado
JasperViewer viewer = new JasperViewer(impressao, false);
viewer.show();
}