来自List的Java模式匹配

时间:2017-09-30 18:34:24

标签: java regex

我有一个包含以下模式的列表:

List<String> listStrings = new ArrayList<String>();
listStrings.add("Product-typeA"); 
listStrings.add("Product-typeA-2");
listStrings.add("Product-typeA-3");
listStrings.add("Product-typeA-5");
listStrings.add("Product-typeB");
listStrings.add("Product-typeB-2");
listStrings.add("Product-typeC");
listStrings.add("Product-typeC-2");
listStrings.add("Product-typeC-3");
System.out.println(listStrings);

如何使用模式(或更好的方式)搜索特定产品类型,并获取该产品类型的最大数量并将其添加到列表中。例如:如果我搜索Product-typeA的最大值,则应返回Product-typeA-6并将其添加到列表中。

1 个答案:

答案 0 :(得分:1)

您可以流式传输列表,提取索引,找到最大的索引并添加一个:

private static void addNext(List<String> list, String prefix) {
    int nextIndex =
            list.stream()
                .filter(s -> s.startsWith(prefix + "-"))
                .map(s -> s.replace(prefix + "-", ""))
                .mapToInt(Integer::parseInt).max().orElse(0);
    list.add(prefix + "-"  + nextIndex);
}