明天的明天 永远的永远 未知的一切 我与你一起承担 ??

是非成败转头空 青山依旧在 几度夕阳红 。。。
  博客园  :: 首页  :: 管理

在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);