Posted at

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

More than 3 years have 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