java8Stream流的filter⽅法过滤数据
jdk1.8以上才能使⽤,叫内部迭代
没有写类,直接写的map,实体类也是可以⽤的
这样看起来简洁⼀点
public static void main(String args[]){
List<Map<String,Object>> list=new ArrayList<>();
for(int i=0;i<5;i++){
Map<String,Object> map=new HashMap<>();
map.put("type",i);
list.add(map);
}
System.out.println("list过滤前的数据:"+list);
System.out.println("list过滤前的数量:"+list.size());
//过滤获取 type=2的数据
List<Map<String,Object>> list2 = list.stream().filter((Map a) -> ("2".("type").toString()))).List()); //只获取数量也可以这样写
Long list2Count = list.stream().filter((Map a) -> ("2".("type").toString()))).count();
System.out.println("list过滤后的数据:"+list2);
System.out.println("list过滤后的数量:"+list2Count);
System.out.println("list过滤后的数量:"+list2.size());
}
效果图
JSONArray数据使⽤Stream filter
@org.junit.Test
public void t3() {
//初始化数据
JSONArray listD = new JSONArray() {{
add(new JSONObject() {{
put("STATUS", "Y");
put("DOC_NO", "1");
}});
add(new JSONObject() {{
put("STATUS", "N");
put("DOC_NO", "2");
}});
}};
//1. JSONArray->JSONObject->JSONArray ⾃定义获取STATUS=Y的数据
JSONArray listD1 = listD.stream().filter(a -> {
JSONObject jsona = (JSONObject) a;
//如果STATUS=Y 则返回true
if (String("STATUS").equals("Y")) {
return true;java stream
} else {
//如果STATUS!=Y 则返回false 抛掉该数据
return false;
}
}).Collection(JSONArray::new));
//2. JSONArray->Map->JSONArray ⾃定义获取STATUS=Y的数据
JSONArray listD2 = listD.stream().map(obj -> {
Map<String, Object> returnObj = new JSONObject();
//强制转换obj
Map<String, Object> jsonObj = (JSONObject) obj;
jsonObj.forEach((key, val) -> {
//如果STATUS=Y 则put到 returnObj 中
if ("STATUS".equals(key) && "Y".equals(val)) {
returnObj.put(key, (val));
}
});
return returnObj;
}).Collection(JSONArray::new));
log.info("\nlistD{}", listD);
log.info("\nlistD1{}", listD1);
log.info("\nlistD2{}", listD2);
}
执⾏结果:
2021-01-11 15:32:21.533 INFO --- [ main] p.azwmsmybatis.Test : listD[{"DOC_NO":"1","STATUS":"Y"},{"DOC_NO":"2","STATUS":"N"}]
2021-01-11 15:32:21.573 INFO --- [ main] p.azwmsmybatis.Test : listD1[{"DOC_NO":"1","STATUS":"Y"}]
2021-01-11 15:32:21.576 INFO --- [ main] p.azwmsmybatis.Test : listD2[{"STATUS":"Y"},{}]
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论