gpt4 book ai didi

如果字符串包含列表中的任何项目,JAVA 返回最长的值

转载 作者:行者123 更新时间:2023-12-02 08:16:59 26 4
gpt4 key购买 nike

我有以下代码类型数组:

["sample_code","code","formal_code"]

以及以下 ID:

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);

它不适用于第一个 id,因为它返回“code”而不是“sample_code”,我想获取最长的代码类型。

for the 1st id the code type should be "sample_code"
for the 2nd id the code type should be "code"

最佳答案

首先检查最长的代码类型。这意味着您的代码需要进行以下更改:

  1. 按长度降序对代码类型进行排序。
  2. 不要使用并行流。并行流没有订单。顺序流可确保按顺序检查代码类型。
  3. 使用 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

关于如果字符串包含列表中的任何项目,JAVA 返回最长的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60250833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com