在Java中,你可以使用Stream API来过滤List<JSONObject>
并取值。以下是一个简单的例子,演示如何过滤并取出符合条件的JSONObject
中的值。
List<mattchartsResult> mattchartsResultList = mattProblemService.queryCharts(hasButtonCodePerm, loginUser.getId()); if(mattchartsResultList != null && mattchartsResultList.size() >0) { List<String> Ids = mattchartsResultList.stream().map(mattchartsResult::getName).collect(Collectors.toList()); System.out.println("Ids>>>" + Ids.toString()); List<JSONObject> listUserByUserIdList = loginUserApi.listUserByUserIdList(Ids); System.out.println("listUserByUserIdList.size()>>>" + listUserByUserIdList.size()); mattchartsResultList.forEach(item -> { if (listUserByUserIdList!=null) { String proName= listUserByUserIdList.stream().filter(jsonObject -> jsonObject.getStr("id").equals(item.getName())).map(j->{return j.getStr("name");}).collect(Collectors.joining(",")); item.setName(proName); } }); }
// 假设我们有一个包含JSONObject的List List<JSONObject> jsonList = // ... 初始化列表 // 过滤列表,只保留键"key"值为"value"的JSONObject List<JSONObject> filteredList = jsonList.stream() .filter(json -> "value".equals(json.opt("key"))) .collect(Collectors.toList()); // 取出过滤后JSONObject的特定值 List<String> values = filteredList.stream() .map(json -> json.optString("targetKey")) .collect(Collectors.toList()); // 打印取得的值 values.forEach(System.out::println);
1、从中筛选出小于20的学生们组成一个新的集合
List<Student> list = students.stream().filter(student -> student.getAge() < 20).collect(Collectors.toList());
1.2、去重 distinct
distinct()它会返回一个元素各异(根据流所生成元素的 hashCode和equals方法实现)的流。
List<Student> collect = students.stream().distinct().collect(Collectors.toList());
collect.forEach(System.out::println);
3、选出集合中前五位同学 组成一个新的集合
List<Student> collect = students.stream().limit(5).collect(Collectors.toList());
4、从第二个同学开始组成新的集合
List<Student> collect = students.stream().skip(2).collect(Collectors.toList());
collect.forEach(System.out::println);
5、给这群学生按年龄排序
List<Student> collect = students.stream() .sorted((student1, student2) -> student1.getAge() - student2.getAge()) .collect(Collectors.toList()); collect.forEach(System.out::println);
6、我要去这一群学生中找到 年龄在 20 岁以下,分数在90分以上的前3名学生。
List<Student> collect = students.stream() .filter(student -> student.getAge() < 20) .filter(student -> student.getScore() > 90.0) .limit(3) .collect(Collectors.toList()); collect.forEach(System.out::println);
二、映射 map
List<String> collect1 = students.stream() .map(student -> student.getName()) .distinct() .collect(Collectors.toList()); collect1.forEach(System.out::println);