Agrupe el elemento de la lista por elementos para usar en un recibo jsp

Tengo un código a continuación que utilizo para consultar la base de datos y agregar datos a la lista,

Query q= session.createQuery("select tally_receipt_prefix, tally_receipt_no,           tally_head, tally_amount from Tally_table where tally_system_date='"+fmtd_date+"' and tally_dbcr_indicator='DB' and tally_mode='Ca' order by  tally_head,tally_receipt_prefix,tally_receipt_no");

    payincash = new ArrayList();

    for(Iterator it=q.iterate(); it.hasNext(); )
    {
        Object[] row= (Object[]) it.next();
        payincash.add((String)row[0]);
        payincash.add((String)row[1]);
        payincash.add((String)row[2]);
        payincash.add((String)row[3]);

    }

    System.out.println("cash list in dao: "+payincash);

La lista devuelta se parece a [prefix1, no1, head1, amt1, prefix2, no2, head2, amt2,]. Estoy tratando de hacer un recibo en jsp en las líneas de

cabeza1

prefijo1 / no1 amt1

prefijo2 / no2 amt 2


cabeza3

prefijo3 / no3 amt3

Aparentemente, quiero agrupar todos los registros por columna principal en el recibo - archivo jsp. ¿Cómo hago para esto? Cualquier ayuda completamente apreciada. Por favor disculpa mi inglés.

Editar: Esto es lo que probé,

Consulta Q = session.createQuery ( "select tally_receipt_prefix, tally_receipt_no, tally_head, tally_amount de Tally_table donde tally_system_date = ' "+ fmtd_date +"' y tally_dbcr_indicator = 'DB' y tally_mode = 'Ca' orden por tally_head, tally_receipt_prefix, tally_receipt_no"); System.out.println ("consulta" + q);

    List heads=new ArrayList();

    for(Iterator it=q.iterate(); it.hasNext(); )
    {
        Object[] row= (Object[]) it.next();

        payincash1=new LinkedHashMap<String, List>();

        heads.add((String)row[2]);

        List tails = null;
        tails=new ArrayList();
        tails.add((String)row[0]);
        tails.add((String)row[1]);
        tails.add((String)row[3]);

        System.out.println("heads in dao from iter 1: "+heads);  
        System.out.println("tails in dao from iter1 on: "+tails);

        if(heads.contains((String)row[2]))  // for head in temp list
        {
            System.out.println("in first if");
            if(payincash1.containsKey((String)row[2]))     
            {
                System.out.println("map if repeat: "+payincash1);
                payincash1.put((String)row[2],tails);
            }

        } 
        else
        {

            System.out.println("map if not repeat: "+payincash1);
            payincash1.put((String)row[2], tails);

        }

    }
Respuesta 1

¿Dónde se almacena la columna principal del recibo? en que columna
En mi humilde opinión, también debería almacenarse en la base de datos.
Digamos que la información del encabezado se mantiene en la columna "head" en DB, por lo que debe cambiar su consulta, agregando:

order by head

Al final.
Después de eso, debe iterar sobre el Resultado, y tal vez mantener la información en una estructura de datos que se vea así:

Map<String,List<ReceiptInformation> map = new HashMap<>(); //using JDK7 syntax here

La clave en el mapa debe ser el valor de "cabeza" en cada iteración. El valor en el mapa debe ser una ArrayList (o cualquier otra clase que implemente la Lista) que contenga objetos ReceiptInfo.
ReceiptInfoObject contiene todos los demás valores por registro.
Luego, puede iterar en la colección map.keySet () y, para cada tecla, insertar el encabezado e imprimir los recibos con un bucle interno.

Editado por solicitud del usuario que hizo la pregunta:
para agregar nuevas entradas (es decir, un nuevo objeto RecepitInformation al mapa) se debe realizar:

List<RecepitInformation> listForHead = map.get(headValue);
if (listForHead == null) {
   listForHead = new ArrayList<ReceiptInformation>();
   map.put(headValue,listForHead);
}
listForHead.add(recepitInformation);

Como de costumbre, no compilé esto, pero creo que debería funcionar

Respuesta: 2

Pude usar esta pregunta como punto de partida para analizar un archivo "mht" pero el "3D" en las etiquetas de anclaje (por ejemplo: <a href=3D"[my anchorfont>"> [texto de anclaje]> </ a >) rompe todos los ...

Tengo un conjunto con hashmaps multidimensionales, así: Set <HashMap <String, HashMap <String, String >>> myHashSet = new HashSet <HashMap <String, HashMap <String, String >> & ...

Tengo problemas con JPA para mantener los datos antiguos en caché y he probado las soluciones que pude encontrar, ¡pero sigue apareciendo! De todos modos, inicialmente reutilicé una instancia de Entity Manager para mayor eficiencia. Cuando yo ...

Usando JAVA. Estoy tratando de encontrar una forma más elegante para validar una ruta de carpeta de Linux (sin incluir el nombre del archivo). Lo que tengo hasta ahora es esto: "^ \\ / $ | ^ ((\\ / ([a-zA-Z0-9 _-] +)) +) $" Rutas de carpetas ...