对给定的字符串模式使用Java regex或Java streams,并从中创建映射的方法如下:
示例代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Map;
import java.util.HashMap;
public class RegexExample {
public static void main(String[] args) {
String input = "Hello, my name is John. I am 25 years old.";
String pattern = "(\\w+)";
Pattern compiledPattern = Pattern.compile(pattern);
Matcher matcher = compiledPattern.matcher(input);
Map<String, Integer> wordCountMap = new HashMap<>();
while (matcher.find()) {
String word = matcher.group();
wordCountMap.put(word, wordCountMap.getOrDefault(word, 0) + 1);
}
System.out.println(wordCountMap);
}
}
输出结果:
{is=1, am=1, my=1, Hello=1, old=1, name=1, John=1, I=1, years=1}
上述示例代码使用正则表达式模式"(\w+)"匹配输入字符串中的单词,并使用Map来统计每个单词的出现次数。
示例代码:
import java.util.Arrays;
import java.util.Map;
import java.util.HashMap;
public class StreamsExample {
public static void main(String[] args) {
String input = "Hello, my name is John. I am 25 years old.";
String[] words = input.split("\\W+");
Map<String, Integer> wordCountMap = Arrays.stream(words)
.collect(HashMap::new, (map, word) -> map.put(word, map.getOrDefault(word, 0) + 1), HashMap::putAll);
System.out.println(wordCountMap);
}
}
输出结果:
{is=1, am=1, my=1, Hello=1, old=1, name=1, John=1, I=1, years=1}
上述示例代码使用split("\W+")方法将输入字符串拆分为单词数组,然后使用流的collect()方法将单词数组转换为映射,其中使用HashMap::new创建新的HashMap实例,(map, word) -> map.put(word, map.getOrDefault(word, 0) + 1)用于更新映射中单词的计数,HashMap::putAll用于合并多个映射。
这样,通过Java regex或Java streams,可以对给定的字符串模式进行匹配和映射创建。
领取专属 10元无门槛券
手把手带您无忧上云