0
0

More than 5 years have passed since last update.

部分文字列を取得する2

Posted at

始めに

昨日、文字列の部分配列を取得するプログラムを掲載しましたが、もっと改良するべき箇所があったので改良版を掲載します

改良点

  • 切り出し位置の座標を列挙し、決定した座標をもとに文字列を切り出す実装に変更した
  • Java8のストリームAPIを使ってみた

実装コード

TestClaoo.java
package test;

import java.awt.Point;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class MyFuncTest2 {
    public static void main(String args[])throws Exception{
        String sample = "ABCDE";
        System.out.println(
            makeList(sample.length()) //文字列の要素分、切り出し位置を決定する座標のListを生成する
            .stream()                 //Listをストリームに変換する
            .filter(a-> a.x <= a.y)   //x座標がy座標より小さいものをListから抽出し
            .map(mapper -> sample.substring(mapper.x,mapper.y+1)) //抽出した座標を用いて部分文字列を切り出し
            .collect(Collectors.toList()) //streamをリストに変換する
        );
    }

    //引数で指定した数値の分、座標を生成する
    public static List<Point>  makeList(int num)throws Exception{
        List<Point> kridashi = new ArrayList<Point> (); 
        //外側のループは切り出し位置の開始を決定しています
        for(int KIRIDASHI_START =0; KIRIDASHI_START<num;KIRIDASHI_START++){
            //内側のループは切り出し位置の終了を決定しています
            for(int KIRIDASHI_END =0; KIRIDASHI_END < num; KIRIDASHI_END++){
                Point point = new Point();
                //切り出し位置の先頭をリストに格納する
                point.x = KIRIDASHI_START;
                point.y = KIRIDASHI_END;
                kridashi.add(point);
            }
        }
        return kridashi;
    }
}

0
0
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
0
0