过滤 Json 数组到自定义数据 JAVA

Filter Json Array to custom Data JAVA

这是我第一次使用 json,我在尝试过滤数组时遇到了困难我正在尝试获取所有值文档 ID /Page

datalist = {"DocA|1", "DocA|2, "DocA|3, "DocA|4,, "DocB|1, "DocB|3" , "DocC|1"}
JSONArray jsonObject = json.getJSONArray("datalist");

如何创建过滤值列表? DocA 第 1、2、3、4 页 DocB 第 1 页 DocC 页面

如果需要将String的输入数组转换为文档ID到页面ID列表的指定映射,可以使用Java 8 Stream API实现如下:

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Main {

    public static void main(String[] args) {

        String[] input = {"DocA|1", "DocA|2", "DocA|3", "DocA|4", "DocB|1", "DocB|3", "DocC|1"};
        
        Map<String, List<Integer>> data = Arrays.stream(input) // get stream of Strings
              .map(s -> s.split("\|")) // split each string into array using | delimiter
              .collect(Collectors.groupingBy(
                  arr -> arr[0], // use documentId as key
                  Collectors.mapping(arr -> Integer.parseInt(arr[1]), Collectors.toList())) // parse page IDs and collect them to list
        );

        System.out.println(data);
    }
}

输出:

{DocA=[1, 2, 3, 4], DocB=[1, 3], DocC=[1]}