I've read this post here. But still I cannot run code containing Java 8 Stream API features like the following on minSdkVersion < 24.
List<Car> newCars = cars.stream() .filter(s -> s.getColor().equals("red")) .collect(Collectors.toList());
This doesn't run due to the error message
Call requires API level 24 (current min is 15): java.util.Collection#stream
So does someone know a solution?
Android does not support Java 8. It only supports up to Java 7 (if you have kitkat) and still it doesn't have invokedynamic, only the new syntax sugar. If you want to use lambdas, one of the major features of Java 8 in Android, you can use gradle-retrolamba.
Introduced in Java 8, the Stream API is used to process collections of objects. A stream is a sequence of objects that supports various methods which can be pipelined to produce the desired result.
All the Java Stream API interfaces and classes are in the java. util. stream package. Since we can use primitive data types such as int, long in the collections using auto-boxing and these operations could take a lot of time, there are specific classes for primitive types – IntStream , LongStream and DoubleStream .
Java 8 source code that works in latest version of Android, can be made to work in older versions of Android.
[original answer]
You can not use Java8 streams on API level < 24.
However, there are some libraries that backport some of the stream functionality
https://github.com/aNNiMON/Lightweight-Stream-API
https://github.com/konmik/solid
https://sourceforge.net/projects/streamsupport/ (mentioned by @sartorius in comment)
[update k3b 2019-05-23]
https://github.com/retrostreams/android-retrostreams is a spinoff from streamsupport which takes advantage of Android Studio 3.x D8 / desugar toolchain's capability to use interface default & static methods across Jar file boundaries. There are also links to other android-retroXXX ie for CompletableFuture.
[update aeracode 2020-07-24]
Good news, now we can use Java 8 Stream API and more without requiring a minimum API level.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With