読者です 読者をやめる 読者になる 読者になる

文字列区切り→リスト

Java7 では、数字がカンマなどで区切られた文字列を split して List<Integer> にするのに、

こんなコードを書いていた。。。

  String str = "1,2,,4,5";

  List<Integer> list = new ArrayList<Integer>();
  for(String s: str.split(",") ){
   if ( ! "".equals(s) ){
             list.add(Integer.parseInt(s));
           }
        }

Java8 なら、、いろいろ書き方あるかもしれないが、、Arrays.asList を使うなら、

  List<Integer> list = Arrays.asList(str.split(",")).stream()
         .filter(e->!"".equals(e))
         .mapToInt(Integer::parseInt)
         .collect(ArrayList<Integer>::new, (r, t)->r.add(t), (r, u)->r.addAll(u));

  PatternのsplitAsStreamを使うなら、

       List<Integer> list = Pattern.compile(",").splitAsStream(str).filter(e->!"".equals(e))
         .mapToInt(Integer::parseInt)
         .collect(ArrayList<Integer>::new, (r, t)->r.add(t), (r, u)->r.addAll(u));

こんなところだろうか。。if文の代わりに filter は必要だなあ。。