LoginSignup
2
1

More than 5 years have passed since last update.

CollectionUtilsのとっても簡単なサンプル(Java8版)

Last updated at Posted at 2016-02-16

前回、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を完全に取り除きました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1