stream() method does not work in android

2019-01-28 03:45发布

问题:

How can I convert this statement from classic java to android

Collection<Integer> p1;   
int sum = p1.stream().mapToInt(Integer::intValue).sum();

I integrate Java 8 and lambda to my android application, but it still does not work. The method stream() does not found in android.

Can you help me?

回答1:

You can use the streamsupport library which backports the stream API to Java 6/7 which can be used for Android development, supported on all devices.

Afaik, this library fully backports the original implementation present in Java 8 and makes it available in a separate package (prefix java8.). The added default methods on the Collection interface (e.g. #stream(), #forEach()) are available from separate utility classes, e.g. Iterables or StreamSupport.



回答2:

Stream API is included in a recent revision of Android 7.0 SDK Platform (API 24):

public interface Collection<E> extends Iterable<E> {
    // .. redacted
    default Stream<E> stream() { .. }
}

Please note that in order to use it you have to set minSdkVersion to 24.