Java8新特性stream流应用
- stream过滤JSONArray类型数据(过滤掉online为0的数据,拿到过滤后的数量)
JSONArray jsonArray1=new JSONArray();
long count = jsonArray.stream().filter(t->((JSONObject)t).getString("online").equals("0")).count();
- stream过滤JSONArray类型数据并根据字段值去重(过滤掉age不为18的数据,再根据name值去重,统计数量)
String json="[{'name':'a','age':'18','value':1},{'name':'b','age':'18','value':2}" +
",{'name':'b','age':'18','value':3},{'name':'d','age':'18','value':4}" +
",{'name':'b','age':'18','value':4},{'name':'d','age':'18','value':5}]";
JSONArray j1=JSON.parseArray(json);
Long collect1 = j1.stream().filter(t -> ((JSONObject) t).getString("age").equals("18")).count();
Long collect2 = j1.stream().filter(t -> ((JSONObject) t).getString("age").equals("18")).map(t -> ((JSONObject) t).getString("name")).distinct().count();
System.out.println("去重前:"+collect1);
System.out.println("去重后:"+collect2);
控制台输出:
去重前:6
去重后:3