按主要词分组

Group by main words

考虑以下 TreeSet:

这组有 2 个主要词 bluered 以及不同的关键词。
我需要按这些主要词进行分组,以便获得包含所有可能关键词的列表。类似于:

我觉得步骤应该是这样的:

  1. 检测主词
    • 列表按字母顺序排列,因此主要单词彼此相邻出现
    • 它只能是条目中的第一个词
    • 至少由3个字母组成
    • 并非每个条目都有主词(条目 some words无用词 应该跳过)
  2. 按主词分组
    • 某种"merging":取所有具有相同主词的条目,并从每个条目中删除它,这样只剩下剩下的关键词
      • 蓝色花朵
      • 蓝色大车
      • 蓝色帽子123
    • 本例中关键字:花,大,车,帽子,123还剩

有人可以给我建议如何完成它以及我需要什么吗?

我认为您不需要正则表达式。使用 String.split(" ") 在空白处拆分每个字符串,然后检查第一项以将其与您的 "main" 单词列表进行比较。

TreeSet<String> originalSet = // as per question
List<String> mainWords = Arrays.asList("blue", "red");
Map<String, Set<String>> words = new HashMap<>();
for(String mainWord : mainWords) {
    words.put(mainWord, new HashSet<String>());
}
for(String line : originalSet) {
    String[] items = line.split(" ");
    if(words.keySet().contains(items[0])) {
        for(int i = 1 ; i < items.length ; i++) {
            words.get(items[0]).add(items[i]);
        }
    }
}