gpt4 book ai didi

java - 如何找到以给定字母开头的单词

转载 作者:行者123 更新时间:2023-12-03 23:13:16 25 4
gpt4 key购买 nike

给定字符串,例如:My name is James Bond iee我想在结果中有 Map以字符作为键,将字符串集作为值(这组字符串是以相应字符键开头的字符串)- Map<Character,Set<String>> .例如:

m - my, n - name, i - is, iee, j - james etc.

我完成了从标点符号中净化字符串和负责查找字符的编写方法。在我的示例中:(m,n,u,j,b)

这些方法:

static String getPurifiedSentenceFromPunctuationMarks(String sentence) {
return sentence.replaceAll("\\p{P}", "");
}

static Set<Character> getEveryCharacterOccuringInSentence(String sentence) {
return sentence.chars()
.mapToObj(e -> (char) e).collect(Collectors.toSet());
}

现在,我想遍历每个字符和每个字符串以找到这些单词,但我正在为如何为每个字符创建集合而苦苦挣扎:

String purifiedSentenceFromPunctuationMarks = AP.getPurifiedSentenceFromPunctuationMarks(sentence);
Set<Character> characters = AP.getEveryCharacterOccuringInSentence(purifiedSentenceFromPunctuationMarks);
String[] words = purifiedSentenceFromPunctuationMarks.split("\\s");
Map<Character, Set<String>> characterWithAccordingWord = new LinkedHashMap<>();
Set<String> nonRepeatableWords = new HashSet<>();

for (char iteratedCharacter : characters) {
for (String iteratedWord : words) {
if (iteratedWord.indexOf(iteratedCharacter) >= 0) {
characterWithAccordingWord.put(iteratedCharacter, )
}
}
}

如您所见,我在需要添加字符串以设置 iteratedCharacter 的那一刻停止了.怎么做到的?也许与流一起更好?我最想在这里使用流。

最佳答案

使用流,一旦您拥有了 String[] words 中所有单词的数组,您可以将它们按第一个字符分组,然后收集成一个 设置为:

Map<Character, Set<String>> characterWithAccordingWord =
Arrays.stream(words).collect(Collectors.groupingBy(word -> word.charAt(0),
Collectors.toSet()));

关于java - 如何找到以给定字母开头的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57744872/

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