ザックFST:
私は、コードタイプの次の配列を持っています:
["sample_code","code","formal_code"]
そして、次のIDS:
String id="123456789_sample_code_xyz";
String id2="91343486_code_zxy";
私は、IDSからコードタイプを抽出したいです
これは私のコードスニペットです:
String codeTypes[] = {"sample_code","code","formal_code"};
String id= "123456789_sample_code_xyz";
String codeType = Arrays.stream(codeTypes).parallel().filter(id::contains).findAny().get();
System.out.println(codeType);
それは代わりに「sample_code」の「コード」を返すため、私は最も長いコードタイプを取得したい、第一のIDで作業をdoesntの。
for the 1st id the code type should be "sample_code"
for the 2nd id the code type should be "code"
オレVV:
最初の最長コードの種類を確認してください。これはあなたのコードに次の変更を意味します。
- 長下降によってコードタイプを並べ替えます。
- 並列ストリームを使用しないでください。パラレルストリームは、順序を持っていません。順次ストリームは、コードタイプが順にチェックされているを確認します。
- 使用
findFirst()
ではなく、findAny()
あなたが最初の試合を得ることを確認します。
だから、次のようになります。
String codeTypes[] = { "sample_code", "code", "formal_code" };
Arrays.sort(codeTypes, Comparator.comparing(String::length).reversed());
String id = "123456789_sample_code_xyz";
Optional<String> codeType = Arrays.stream(codeTypes).filter(id::contains).findFirst();
codeType.ifPresent(System.out::println);
今、出力は次のようになります。
sample_code