我有一个字符串,其中某些单词具有某些同义词。
例如字符串:A B C D
和带有同义词的单词是:
A => AX,AY,AZ
B => BX,BY
C => CX,CY,CZ
我必须找到具有这些同义词的不同字符串组合。
上面的String的输出应该是:
AX,BX,CX
AX,BX,CY
AX,BX,CZ
AX,BY,CX
AX,BY,CY
AX,BY,CZ
并从键A的AY重复相同的过程,依此类推...
我有一个wordSynonymList,它包含一个Map列表。每个地图都包含一个键(即单词(A))和一个值(该单词的同义词列表)。
例如[{A = [AX,AY,AZ]},{B = [BX,BY]} ........
我正在尝试使用嵌套循环,其中循环数=具有同义词的单词数。但是带有同义词的单词不是固定的。
如何使用递归来做到这一点?
##编辑部件##
我正在尝试使用嵌套的for循环来实现这一目标,但是我认为这是不可能的,因为单词是不固定的。
for(Map> wordSynonym:wordSynonymList){
for(Map.Entry<String, List<String>> words : wordSynonym.entrySet()) {
String a = words.getKey(); //gives me A
for (String synonym : words.getValue()) {
//gives me all synonym of A
}
}
}
答案 0 :(得分:0)
您的方法不是很有效,但是您可以设计一个简单的函数来完成此任务:
public static Object getKeyFromValue(Map hm, Object value) {
for (Iterator iter = hm.entrySet().iterator(); iter.hasNext();) {
Map.Entry e = (Map.Entry) iter.next();
if (e.contains(value)) {
return e.getKey();
}
}
return null;
}
我还没有测试它是否有效,但确实如此