filter过滤对象数组java对象转jsonarray,并运⽤stream流各试例(jsonArray循环、分组。。。持续更新
集合转json(以下 com.alibaba.fastjson包)
尽量以集合来获取数据⽅便后续计算
//jfinal 数据库查询
List<User> users= plate("user.find", kv).find();
//转json ⽤此⽅法json只有对象的字段
JSONArray array = JSONArray.JSONString(users));
//⽤此⽅法json 不丢失字段
JSONArray objectsArray = JSONArray.Json().toJson(keys));
JSONArray对象循环
//转object对象 array为jsonArray
Object o = array.stream().max(Comparatorparing(item ->((JSONObject) item).size())).get();
for(Map.Entry<String, Object> entry :((JSONObject) o).entrySet()){
//entry 为jsonObject 直接获取key value
}
//另⼀种
for(Object object : array){
JSONObject temp =(JSONObject) object;
for(Map.Entry<String, Object> entry : Set()){
}
}
获取集合某个字段的值,set接收
/
/转object对象 list集合
Set<String> sets = list.stream().map(item -> String.String("字段名"))).Set());
//另⼀种 array为jsonArray对象
Set<String> hourSet = array.stream().map(item ->((JSONObject) item).getString("字段名")).Set());
list集合根据字段分组
//集合根据name分组 key为名字,value为当前相同名字的集合
Map<String, List<User>> userItems= users.stream().upingBy(item -> Name()));
//遍历
for(Map.Entry<String, List<User>> userItem: Set()){
}
jsonArray分组
//集合根据字段名分组 key为值,value为当前相同key的集合
Map<String, List<Object>> jsonListMap = array.stream().upingBy(item ->((JSONObject) item).getString("字段名")));
for(Map.Entry<String, List<Object>> entry : Set()){
}
jsonArray根据字段值相等过滤出来,返回JSONArray
//array为之前JSONArray
JSONArray list = array.stream().filter(item ->((JSONObject) item).getStr("name").equals(name)).Collection(JSONArray::new));
//JSONArray 排序并返回JSONArray
array=array.stream().sorted(Comparatorparing(obj ->((JSONObject) obj).getBigDecimal("hour_id"))).Collection(JSONArray::new)) ;
集合筛选对象如果有返回对象,没有返回null parallelStream(多线程,异步任务) //获取集合id
List<Long> ids= users.parallelStream().map(User::getId).List());
//集合筛选对象如果有返回对象,没有返回null
User user= users.parallelStream().filter(o -> String("name").Name())).findAny().orElse(null);
流使⽤lambda表达式的Map和Reduce计算总和
List costBeforeTax = Arrays.asList(100,200,300,400,500);
double bill = costBeforeTax.stream().map((cost)-> cost +.12*cost).reduce((sum, cost)-> sum + cost).get();
流集合转字符串,⽤逗号隔开
List<String> strList = Arrays.asList("we","eee","zzz");
String str= strList.stream().map(x -> x.toUpperCase()).collect(Collectors.joining(", "));
流计算集合元素的最⼤值、最⼩值、总和以及平均值
//jsonArray求和
array.stream().mapToInt(item -> ((JSONObject) item).getInteger("impression")).sum();
//获取数字的个数、最⼩值、最⼤值、总和以及平均值
List<Integer> primes = Arrays.asList(2, 3, 5, 7, 11, 13, 17, 19, 23, 29);
IntSummaryStatistics stats = primes.stream().mapToInt((x) -> x).summaryStatistics();
System.out.println("Highest prime number in List : " + Max());
System.out.println("Lowest prime number in List : " + Min());
System.out.println("Sum of all prime numbers : " + Sum());
System.out.println("Average of all prime numbers : " + Average());
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论