我有一个包含以下模式的列表:
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
并将其添加到列表中。
答案 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);
}