{"id":15043320,"url":"https://github.com/annimon/android-java-8-stream-example","last_synced_at":"2025-04-10T00:40:58.697Z","repository":{"id":25577810,"uuid":"29011732","full_name":"aNNiMON/Android-Java-8-Stream-Example","owner":"aNNiMON","description":"Demo app of using Java 8 features with Retrolambda and Lightweight-Stream-API","archived":false,"fork":false,"pushed_at":"2017-06-05T10:25:59.000Z","size":170,"stargazers_count":113,"open_issues_count":0,"forks_count":25,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-24T02:22:43.433Z","etag":null,"topics":["android","demo","java-8","retrolambda","stream-api"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aNNiMON.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-01-09T10:23:12.000Z","updated_at":"2025-02-22T00:20:45.000Z","dependencies_parsed_at":"2022-08-02T10:42:38.366Z","dependency_job_id":null,"html_url":"https://github.com/aNNiMON/Android-Java-8-Stream-Example","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aNNiMON%2FAndroid-Java-8-Stream-Example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aNNiMON%2FAndroid-Java-8-Stream-Example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aNNiMON%2FAndroid-Java-8-Stream-Example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aNNiMON%2FAndroid-Java-8-Stream-Example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aNNiMON","download_url":"https://codeload.github.com/aNNiMON/Android-Java-8-Stream-Example/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248137997,"owners_count":21053775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","demo","java-8","retrolambda","stream-api"],"created_at":"2024-09-24T20:48:51.197Z","updated_at":"2025-04-10T00:40:58.664Z","avatar_url":"https://github.com/aNNiMON.png","language":"Java","readme":"# Android Java 8 Stream API Example\n\nDemo app of using Java 8 features with [Retrolambda](https://github.com/orfjackal/retrolambda) and [Lightweight-Stream-API](https://github.com/aNNiMON/Lightweight-Stream-API).\n\nFeatures:\n - [() -\u003e lambda expression](app/src/main/java/com/annimon/java8streamexample/MainActivity.java#L49-L54)\n\n   ```java\n   findViewById(R.id.go).setOnClickListener(v -\u003e {\n      final int index = mActionSpinner.getSelectedItemPosition();\n      if (index != Spinner.INVALID_POSITION) {\n          action(actions[index]);\n      }\n   });\n   ```\n\n\n - [Method::references](app/src/main/java/com/annimon/java8streamexample/Word.java#L37)\n \n   ```java\n   int cmp = Objects.compare(word, other.word, String::compareToIgnoreCase);\n   ```\n\n\n - [Stream.API()](app/src/main/java/com/annimon/java8streamexample/Utils.java#L37-L41)\n \n   ```java\n   return Stream.of(lines)\n        .map(str -\u003e str.split(\"\\t\"))\n        .filter(arr -\u003e arr.length == 2)\n        .map(arr -\u003e new Word(arr[0], arr[1]))\n        .collect(Collectors.toList());\n   ```\n\n\n - [switch for \"string\"](app/src/main/java/com/annimon/java8streamexample/MainActivity.java#L85)\n \n   ```java\n   switch (action) {\n       case \"filter 1\":\n           // Filter one word\n           stream = stream.filter(p -\u003e p.getWord().split(\" \").length == 1);\n           break;\n       case \"filter 2+\":\n           // Filter two and more words\n           stream = stream.filter(p -\u003e p.getWord().split(\" \").length \u003e= 2);\n           break;\n       // ...\n   }\n   ```\n\n- [try(with-resources) {}](app/src/main/java/com/annimon/java8streamexample/Utils.java#L28)\n\n  ```java\n  final List\u003cString\u003e lines = new ArrayList\u003c\u003e();\n  try (final InputStream is = context.getAssets().open(\"words.txt\");\n       final InputStreamReader isr = new InputStreamReader(is, \"UTF-8\");\n       final BufferedReader reader = new BufferedReader(isr)) {\n      String line;\n      while ( (line = reader.readLine()) != null ) {\n          lines.add(line);\n      }\n  }\n  ```\n\n- [Objects](app/src/main/java/com/annimon/java8streamexample/Word.java#L48) (from Java 7)\n\n  ```java\n  @Override\n  public boolean equals(Object o) {\n      // ...\n      final Word other = (Word) o;\n      return Objects.equals(translate, other.translate) \u0026\u0026\n             Objects.equals(word, other.word);\n  }\n\n  @Override\n  public int hashCode() {\n      return Objects.hash(word, translate);\n  }\n  ```\n  \n- ~~try {~~ [Exceptional](app/src/main/java/com/annimon/java8streamexample/Utils.java#L26-L43) ~~} catch~~ (functional try/catch)\n\n  ```java\n  return Exceptional.of(() -\u003e {\n      final InputStream is = context.getAssets().open(\"words.txt\");\n      // ... operations which throws Exception ...\n      return lines;\n  }).ifException(e -\u003e Log.e(\"Java 8 Example\", \"Utils.readWords\", e))\n    .getOrElse(new ArrayList\u003c\u003e());\n  ```\n\n\n## Links\n  \nDemo app: [Java8StreamExample.apk](http://annimon.com/ablogs/file325/Java8StreamExample.apk)\n\nBlog (Russian): [Java 8 в Android со Stream API и лямбдами](http://annimon.com/article/1176)\n\nRetrolambda: https://github.com/orfjackal/retrolambda\n\nLightweight-Stream-API: https://github.com/aNNiMON/Lightweight-Stream-API\n\n\n\n## Screenshots\n![screen_1](http://annimon.com/ablogs/file321/stream_api_android_5.png) ![screen_2](http://annimon.com/ablogs/file318/stream_api_android_2.png)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fannimon%2Fandroid-java-8-stream-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fannimon%2Fandroid-java-8-stream-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fannimon%2Fandroid-java-8-stream-example/lists"}