Androidでリスト操作するなら、Lightweight-Stream-APIが便利

  • 53
    Like
  • 0
    Comment
More than 1 year has passed since last update.

↓こちらです。
aNNiMON/Lightweight-Stream-API
https://github.com/aNNiMON/Lightweight-Stream-API

Android(Java7)

Java8から導入されたStream API、Androidでは使うことが出来ません。
なのでこんなコードを書いてしまうことも

java7
// 生徒の中からidが10より大きい生徒の名前のリストを取得
List<String> names = new ArrayList<>();
for (Student student : students) {
   if (student.id > 10) {
      names.add(student.name);
   }
}

RxJava

そんな折、RxJavaでリスト操作を代用することも

RxJava(retrolambda使ってます)
// 生徒の中からidが10より大きい生徒の名前のリストを取得
List<String> names = Observable.from(students)
                     .filter(student -> (student.id > 10))
                     .map(student -> student.name)
                     .toList().toBlocking().single();

for文とif文がなくなっていいかんじ。
でもRxJavaっていろんな機能があるし、リスト操作のためだけに入れるのもなぁ…

Lightweight-Stream-API

Lightweight-Stream-API(retrolambda使ってます)
// 生徒の中からidが10より大きい生徒の名前のリストを取得
List<String> names = Stream.of(students)
                     .filter(student -> (student.id > 10))
                     .map(student -> student.name)
                     .collect(Collectors.toList());

うん、いいかんじ
Java8のStream APIで出来ることもほとんど出来るっぽい

サンプルプロジェクトもあります。
https://github.com/aNNiMON/Android-Java-8-Stream-Example