Question: How to solve java lambda filter future collection?

I got a future collection, And I want to filter out the false result returned in the collection, but using lambda to report (Missing return statement), I want to get a collection looks like `List<Map<String, Object>>`. What should I do to achieve filtering? 

```
List<Future<Map<String, Object>>> future = 
    childIds.getChildOrder()
            .stream()
            .map(i -> service.submit(new some(i)))
            .collect(Collectors.toList());

            future.stream().filter(i -> {
                try {
                    i.get().get("success").equals(Boolean.FALSE);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } catch (ExecutionException e) {
                    e.printStackTrace();
                }
            }).findAny().get().get();

```

[![enter image description here](https://i.stack.imgur.com/mIWfy.png)](https://i.stack.imgur.com/mIWfy.png)

The `Map<String, Object>` structure looks like this `{"success":"false", "msg":"I got error"}`

Answer: 
You must have return statements in all execution paths:

```
future.stream().filter(i -> {
    try {
        return i.get().get("success").equals(Boolean.FALSE);
    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (ExecutionException e) {
        e.printStackTrace();
    }
    return false; // depending on what you wish to return in case of exception
}).findAny().get().get();

```
You can do this in one go and create the list with what you need.

Include the return value to eliminate the IDE warning.

```
List<Future<Map<String, Object>>> future =
        childIds.getChildOrder()
                .stream()
                .map(i -> service.submit(new Some(i)))
                .filter(i -> {
                    try {
                        return Boolean.FALSE.equals(i.get().get("success"));
                    } catch (InterruptedException | ExecutionException e) {
                        e.printStackTrace(); //try to use a logger instead
                    }
                    return false;
                })
                .collect(Collectors.toList());

```

I'd really take a look at what you're trying to do here though. There's likely a simpler way.