com.googlecode.json-simple & Java Streams не работают вместе - PullRequest
0 голосов
/ 08 февраля 2019

У меня проблемы с получением com.googlecode.json-simple и потоков Java-8 для совместной работы.

Следующий код не работает:

JSONArray jsonArray = new JSONArray();
List<String> a = jsonArray.stream()
        .map(o -> ((Map)o).get("s"))
        .map(Object::toString)
        .collect(Collectors.toList());

Там написано:

java: incompatible types: java.lang.Object cannot be converted to java.util.List<java.lang.String>

Но это должно сработать, так как я явно приведу тип объекта потока к String перед сбором.

1 Ответ

0 голосов
/ 08 февраля 2019

Поскольку JSONArray расширяет ArrayList, но не привязывает к нему тип, один из способов сделать это, возможно, состоит в итерации списка по индексу вместо:

JSONArray jsonArray = new JSONArray();
List<String> list = IntStream.range(0, jsonArray.size())
    .mapToObj(i -> ((Map) jsonArray.get(i)).get("s"))
    .map(Object::toString)
    .collect(Collectors.toCollection(ArrayList::new));
...