Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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集合上执行Groupby、Sum、Avg、Min、Max?_Java_Collections_Guava - Fatal编程技术网

如何在java集合上执行Groupby、Sum、Avg、Min、Max?

如何在java集合上执行Groupby、Sum、Avg、Min、Max?,java,collections,guava,Java,Collections,Guava,我一直在尝试构建一个功能,使我能够过滤Java集合中的数据。最终目标是有以下几点 SomeBuilder(Collections) .groupby("Key") .filter("Key","Value") .sum() .getResult() ; Collection<HashMap<String, Object>> transformedList = filter(input,"Dep","GlobalWarming"); 其功能主要类似于sql wor

我一直在尝试构建一个功能,使我能够过滤Java集合中的数据。最终目标是有以下几点

SomeBuilder(Collections)
.groupby("Key")
.filter("Key","Value")
.sum()
.getResult() ;
 Collection<HashMap<String, Object>>  transformedList =  filter(input,"Dep","GlobalWarming");

其功能主要类似于sql world,但并不完全相同。我的问题是如何过滤像
ListOk这样的集合这是为了回答我自己的问题,这可能会帮助其他人。我将使用builder模式来获得方法链接的效果。用于过滤

List<HashMap<String,Object>>
列表
,我用了番石榴,这是我尝试做的一个例子。不是最好的方法,而是一个开始

  private static Collection<HashMap<String, Object>>  filter(
        List<HashMap<String, Object>> resMap, final String key,
        final Object value) {
    Predicate<Map<String, Object>> keyValueMatch = new Predicate<Map<String, Object>>() {
        public boolean apply(Map<String, Object> stringStringMap) {
            return value.equals( stringStringMap.get(key));
        }
    };

    Collection<HashMap<String, Object>>  transformedList = Collections2.filter(resMap, keyValueMatch);
    return transformedList;
}
专用静态收集筛选器(
List resMap,最后一个字符串键,
最终对象值){
谓词keyValueMatch=新谓词(){
公共布尔应用(映射字符串映射){
返回值.equals(stringmap.get(key));
}
};
Collection transformedList=Collections2.filter(resMap,keyValueMatch);
返回转换列表;
}
用法如下

SomeBuilder(Collections)
.groupby("Key")
.filter("Key","Value")
.sum()
.getResult() ;
 Collection<HashMap<String, Object>>  transformedList =  filter(input,"Dep","GlobalWarming");
Collection transformedList=filter(输入“Dep”、“GlobalWarming”);

希望这有帮助。欢迎您提出更好的建议。

groupBy==filter
?为什么会有这样的数据结构?看看Java8流API及其收集器。Guava的Fluentitable也可以做这些事情。由于遗留的原因,我一直坚持使用数据结构和java版本1.6。如果不使用行映射器,Jdbc将以这种格式向我们提供数据。还有其他方法,但许多工程师使用了这种数据结构,然后对其进行了大量操作。我想插入一个通用机制,后者可以根据性能进行调整。我能换衣服吗List@EricBouweresThanx用于编辑:)。请记住从这里开始设置我的问题的格式。@Kent是的,我将把groupby作为过滤器,以减少每一步的数据集。在列表中,列表中的每个hashmap都有一个键,表示数据库列名,值作为该列的值。i、 e每个hashmap都有用于jdbc查询的单独行数据。