Java如何在修改集合时对集合进行分区

时间:2016-01-29 00:47:19

标签: java java-8

我有一个用例,我想用特定的正则表达式对集合进行分区,而在分区时我想修改每个字符串。如果我不这样做,我必须再次遍历密钥并进行另一个正则表达式匹配,因为我可以使用正则表达式分组。

如何在Java 8中执行此操作?

2 个答案:

答案 0 :(得分:1)

在这种情况下,您可以充分利用PatternMatcher之间的区别。例如:

Pattern pattern = Pattern.compile("[abcd]*");
List<String> results = myStrings.stream()
    .map(pattern::matcher).filter(Matcher::matches)
    .map(matcher -> matcher.replaceAll("replacement"))
    .collect(Collectors.toList());

如果合适,也可以使用匹配器group

答案 1 :(得分:0)

您可以从java.util.stream.Collectors链接某些收藏家,以便制作更复杂的收藏家。以下分区由谓词组成,然后使用函数修改虽然请注意仅修改结果数据。

Map<Boolean,List<String>> partitions = strings.stream().collect(
   Collectors.partitioningBy( s -> Pattern.matches(regex,s), //predicate
   Collectors.mapping( s -> modify(x), //function
   Collectors.toList()
   )));