Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按元素对列表项进行分组,以便在jsp回执中使用_Java_Hibernate_List_Jsp_Jakarta Ee - Fatal编程技术网

Java 按元素对列表项进行分组,以便在jsp回执中使用

Java 按元素对列表项进行分组,以便在jsp回执中使用,java,hibernate,list,jsp,jakarta-ee,Java,Hibernate,List,Jsp,Jakarta Ee,下面是一些代码,用于查询数据库并将数据添加到列表中 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

下面是一些代码,用于查询数据库并将数据添加到列表中

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);
返回的列表类似于[prefix1,no1,head1,amt1,prefix2,no2,head2,amt2,]。我正试图用jsp在以下行上生成一个收据:

标题1 前缀1/no1 amt1

prefix2/no2金额2


总目3 前缀X3/no3 amt3

因此,我似乎希望在receipt-jsp文件中按head列对所有记录进行分组。我该怎么办?非常感谢您的帮助。请原谅我的英语

编辑:这是我试过的

Query q=session.createQuery(“选择tally_receive_前缀、tally_receive_no、tally_head、tally_amount from tally_table,其中tally_system_date='”“+fmtd_date+”,tally_dbcr_indicator='DB'和tally_mode='Ca'按tally_head、tally_receive_prefix、tally_receive_receive_no排序”); System.out.println(“查询”+q)

List heads=new ArrayList();
for(迭代器it=q.iterate();it.hasNext();)
{
Object[]行=(Object[])it.next();
payincash1=新建LinkedHashMap();
heads.add((字符串)行[2]);
列表尾=空;
tails=newarraylist();
tails.add((字符串)行[0]);
tails.add((字符串)行[1]);
tails.add((字符串)行[3]);
System.out.println(“iter 1的dao中的头部:“+头部”);
System.out.println(“iter1上的tails in dao:”+tails);
if(heads.contains((String)行[2])//临时列表中的head
{
System.out.println(“输入第一个if”);
if(payincash1.containsKey((字符串)行[2]))
{
System.out.println(“重复时映射:+payincash1”);
payincash1.put((字符串)行[2],尾部);
}
} 
其他的
{
System.out.println(“如果不重复映射:+payincash1”);
payincash1.put((字符串)行[2],尾部);
}
}

收据的标题列存储在哪里?在哪个栏目
依我拙见,它也应该存储在数据库中
假设head信息保存在DB的“head”列中,那么您应该通过添加:

order by head
最后
之后,您应该迭代结果,并可能将信息保存在如下所示的数据结构中:

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

Map您可以使用list.(函数),只要您的列表是一个。对于JDK列表,可以使用(Iterable,Function)。groupBy的结果将是一个很好的例子

谢谢你的回复。Head是select语句中的第三列(tally_Head)。这张地图好像就是我要找的。但是,如何将该列表添加到同一个键头的值中呢。向同一个键添加值将替换旧值,并且我需要将列表附加信息。您好,我将根据您的问题更新我的答案,但是,如果您能投赞成票或对正确答案进行评分,我将不胜感激。
Map<String,List<ReceiptInformation> map = new HashMap<>(); //using JDK7 syntax here
List<RecepitInformation> listForHead = map.get(headValue);
if (listForHead == null) {
   listForHead = new ArrayList<ReceiptInformation>();
   map.put(headValue,listForHead);
}
listForHead.add(recepitInformation);