我一直在尝试构建一个能够在Java集合中过滤数据的功能。最终目标是有一些事情如下。
SomeBuilder(Collections)
.groupby("Key")
.filter("Key","Value")
.sum()
.getResult() ;
该功能大多类似于sql世界但不完全。我的问题是如何过滤像List<HashMap<String,Object>
这样的集合?
如何在此类集合中应用groupby逻辑?
显示过滤此类集合的代码片段将有很大帮助。如果番石榴可以做到这一点,请举个例子。
编辑: - 我已为此问题添加了答案,但请提出更好的方法。希望这能帮到别人。为了做Sum,Avg,Count将在我继续我的项目时更新。
答案 0 :(得分:0)
好的这是回答我自己的问题,可以帮助别人。我将使用构建器模式来获得方法链的效果。用于过滤
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;
}
用法如下。
Collection<HashMap<String, Object>> transformedList = filter(input,"Dep","GlobalWarming");
希望这有帮助。欢迎任何更好的建议。