前回、Apache Commons Collectionsのサンプルを記載しましたが、
これってJava8だと全然違うんじゃないか?と思ったので、Java8でどうなるのかやってみました。
Apache Commons Collections 4.1 API
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import lombok.AllArgsConstructor;
import lombok.Data;
/** サンプルクラス */
public class CommonsCollectionsSample8 {
/** 人物クラス */
@AllArgsConstructor
@Data
class Person {
/** ID */
private int id;
/** 名前 */
private String name;
/** グループ */
private int group;
}
/** サンプル */
public void sample() {
// 人物リスト
List<Person> list = Arrays.asList(
new Person(1, "a", 1),
new Person(2, "b", 1),
new Person(3, "c", 2),
new Person(4, "d", 2),
new Person(5, "e", 2));
// 全て出力
list.stream().forEach(person -> System.out.println(person.toString()));
System.out.println("----------");
// 名前リストを作る
List<String> nameList = list.stream()
.map(person -> person.getName())
.collect(Collectors.toList());
// 全て出力
nameList.stream().forEach(name -> System.out.println(name));
System.out.println("----------");
// グループ1だけに絞る
// 全て出力
list.stream()
.filter(person -> person.getGroup() == 1)
.forEach(person -> System.out.println(person.toString()));
}
public static void main(String[] args) {
new CommonsCollectionsSample8() {
{
sample();
}
};
}
}
実行結果は下記の通りです。
前回と変わっていません。
CommonsCollectionsSample8.Person(id=1, name=a, group=1)
CommonsCollectionsSample8.Person(id=2, name=b, group=1)
CommonsCollectionsSample8.Person(id=3, name=c, group=2)
CommonsCollectionsSample8.Person(id=4, name=d, group=2)
CommonsCollectionsSample8.Person(id=5, name=e, group=2)
----------
a
b
c
d
e
----------
CommonsCollectionsSample8.Person(id=1, name=a, group=1)
CommonsCollectionsSample8.Person(id=2, name=b, group=1)
コードがずいぶんすっきりしました。
そして、CollectionUtilsのサンプルだったはずなのに、ほぼなくなっちゃいました。(A^^;
collectメソッドもなくしちゃいたかったんですが、
さらりと見ただけでは良く分からなかったので、次回の宿題にしたいと思います。
2018/7/5 修正
CollectionUtilsを完全に取り除きました。