Читать json через потоки - PullRequest
0 голосов
/ 03 марта 2020

У меня есть приведенный ниже код, и я ожидаю, что myList будет иметь следующее. Код работает, я просто хотел сделать это в виде одного потока.

my test data preview Data env param

List<String> myList = new ArrayList<>();
    myList.add("my");
    myList.add("test");
    myList.add("data");

    JsonDataResp json = getJsonResponse(); // This give the obj of the below JSON

    List<InnerArr> innerArrs = json.getInnerArr();

    for(InnerArr arr: innerArrs){
        if(myList.contains(arr.getCurrent())){
            myList.add(arr.getNew());
        }
    }
    myList.addAll(json.getStringToSplit().split("\\s"));

Мой Json ответ выглядит следующим образом

{ "stringToSplit": "env param", "innerArr": [ { "current": "test", "new": "preview" }, { "current": "string", "new": "Data" }, { "current": "archive", "new": "dump" } ] }

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

Если по какой-либо причине вы хотите работать только с потоками, сработает следующее:

Stream.concat(innerArrs.stream()
                        .filter(arr -> myList.contains(arr.getCurrent()))
                        .map(InnerArr::getNew),
                Stream.of(json.getStringToSplit().split("\\s"))
).forEach(myList::add);
0 голосов
/ 03 марта 2020

Вы можете заменить для l oop следующим:

innerArrs.stream().filter(x -> myList.contains(x.getCurrent())).forEach(x -> {
    myList.add(x.getNew());
});
...