Giter Club home page Giter Club logo

streamsupport's Introduction

Maven Central javadoc.io Download

streamsupport

streamsupport is a backport of the Java 8 java.util.function (functional interfaces) and java.util.stream (streams) API for Android and users of Java 6 or 7 supplemented with selected additions from java.util.concurrent which didn't exist back in Java 6.

Due to the lack of default interface methods and static interface methods in pre-Java 8 the API had to be slightly adjusted in these areas but still covers the full functionality scope of Java 8. In detail, static and default interface methods have been moved to companion classes in the same package that bear the identical name as the interface but with an "s" appended (e.g. Comparator -> Comparators).

For ease of use, the default methods for most of the functional interfaces were NOT retained as abstract methods in the redefined interfaces (keeping them single method interfaces) - the missing default (and static) methods can always be found in the corresponding companion class.

The streamsupport API lives in the packages java8.util.* and java8.lang respectively. So, it's not possible to simply import the java.util.stream package in your code - you'd rather have to use java8.util.stream instead (see Readme.txt for details). While that is fine as long as you have full control over your source code there is the other common scenario of using a binary 3rd party dependency that has been compiled against the standard Java 8 java.util.stream API. In the latter case bytecode rewriting via ProGuard might be an option. ProGuard supports most Java 8 language features and the latest release can also replace the standard Java 8 stream API by the the streamsupport backport (cf. the Proguard documentation, especially the section titled "Java 8 stream API support").

The current stable release of streamsupport is streamsupport-1.7.2.

Want also lambdas? https://github.com/orfjackal/retrolambda

Note that the streamsupport sourceforge site has been discontinued. New developments, if any, will take place here.

Please give feedback here if you experience any problems.

Features

  • Java 8 / Java 9 Streams library backport
  • Java 8 / Java 9 CompletableFuture backport
  • Java 8 Parallel array operations backport
  • Java 8 Functional interfaces backport
  • Further java.util.concurrent enhancements from Java 7/8 backported to Java 6
  • Includes miscellaneous Java 8 / Java 9 goodies (Optional, StringJoiner, ...)
  • Supports Android - all versions, starting from Ice Cream Sandwich

build.gradle:

dependencies {
    implementation 'net.sourceforge.streamsupport:streamsupport:1.7.2'
}

Maven:

<dependency>
    <groupId>net.sourceforge.streamsupport</groupId>
    <artifactId>streamsupport</artifactId>
    <version>1.7.2</version>
</dependency>

Example usage

import java.util.List;
import java8.util.stream.IntStreams;
import java8.util.stream.StreamSupport;
import static java8.util.stream.Collectors.toList;

List<Integer> list = IntStreams.of(1, 2, 3, 4).boxed()
        .collect(toList());

List<Integer> incremented = StreamSupport.stream(list)
        .map(i -> i + 1)
        .collect(toList());

Forks

Android developers using the Android Studio 3.x toolchain should have a look at the streamsupport forks:

Release Notes

Release Notes

LICENSE

GNU General Public License, version 2, with the Classpath Exception

streamsupport's People

Contributors

stefan-zobel avatar retrostreams avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.