如何动态计算具有特定值的记录总数?

时间:2016-07-07 13:07:08

标签: jasper-reports

我希望创建一个我的手推车的数量'动态的领域。这应该按类型计算任何给定日的手推车数量(例如a,b,c)。但是,我不想创建一个仅按类型(A,B,C)计算的静态列。但是,相反,我需要一个动态计数,根据'类型'因为我们目前还不知道将使用哪种类型,因为这会每天都在变化。

示例数据: Sample data for count

我希望在Ireport 5.6中创建它。

建议的结果

Count By Type

任何想法都会很棒:)

1 个答案:

答案 0 :(得分:1)

您可以使用HashMap计算您的字段,例如。

public Map<String, List<Class>> sortByKey(List<Class> values){
   Map<String, List<Class>> map = new HashMap<>();

   for(Class value : values){
      if(map.containsKey(value.type)){
           List<Class> valueByKey = map.get(value.type);
           valueByKey.add(value);
      }
      else{
           List<Class> newValues = new ArrayList<>();
           newValues.add(value);
           map.put(value.type, newValues);
      }
   }      

   return map;
}

上面的代码按键对数据进行排序,这在您的示例“类型”字段中。然后,您可以通过按特定键检查列表的大小来获取每种类型的编号。示例下面。

List<Class> tmp = map.get("a");
int count = tmp.size();