LoginSignup
5
5

More than 5 years have passed since last update.

List同士のマッチング

Last updated at Posted at 2017-07-11

職場で現状調査のためソースを眺めていましたが、たまたま2重ループでリスト同士をマッチングするコードがありました。
マッチングの仕様はソースを見た限り
‐文字列が格納されているList AとList Bがある
-List Aの文字列がList Bの文字列の先頭から一致しているものが一つでもあればtrueを返す
というものでした。
実装方式は古典的な2重ループでList同士をひとつづつ比較するものでしたが、Stream関数を使ってもっと簡素に記述できるのではないか?と疑問が湧いたので、stream関数を使って実装してみました

MyListSearcher.java
package test;

import java.util.Arrays;
import java.util.List;

public class MyListSearcher {

    public static void main(String args[]){
        List <String> target =Arrays.asList("triple","evergreen");
        List <String> matcher =Arrays.asList("triple,ok","evergreen,ng","aria,ok");
        System.out.println(String.format("実行結果: %b", exe(target,matcher)));
        //実行結果: true

        target =Arrays.asList("triple_1","evergreen");
        matcher =Arrays.asList("triple,ok","evergreen,ng","aria,ok");
        System.out.println(String.format("実行結果: %b", exe(target,matcher)));
        //実行結果: true

        target =Arrays.asList("triple_1","evergreen_2");
        matcher =Arrays.asList("triple,ok","evergreen,ng","aria,ok");
        System.out.println(String.format("実行結果: %b", exe(target,matcher)));
        //実行結果: false

    }

    private static boolean exe(List<String>target,List<String>matcher){
        return target.stream().anyMatch(a->matcher.stream().anyMatch(b->b.startsWith(a)));
    }

}

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