java实现近义词维护

题目要求:
一、近义词维护 给定接口,设置两个单词相互近义。近义词具有相互传递性,如果A和B为近义词,B和C是近义词,那么A、B、C都为近义词。要求提供接口,查询给定的两个但是是否是近义词关系。并且能提供接口清除所有的近义词关系。 接口说明 /**  * 设置2个单词为近义词  * @param word1 单词一  * @param word2 单词二  * @return 0为成功,-1为失败或其他异常  */ public int setSynonyms(String word1, String word2) /**  *判断2个单词是否为近义词(同一单词视为近义词)  *@param word1 单词一  *@param word2 单词二  *@return 为近义词返回true,否则返回false  */ public boolean isSynonyms(String word1, String word2) /**  * 清除单词之间的近义词关系  */ public void clearRelations()

程序如下:首先设定A与B的近义词关系,再设定B与C的近义词关系,B与C以及A与C之间都是近义词关系,所以前两次为true,当执行clear方法后,map清空,最后一次打印为false
 1 import java.util.HashMap;
 2 import java.util.Iterator;
 3 import java.util.Map;
 4 import java.util.Scanner;
 5 public class Synonyms {
 6     private static Boolean isSyn = false;
 7     static Map<String, String> map = new HashMap<String, String>();
 8     public static void main(String[] args) {
 9         Scanner scan = new Scanner(System.in);
10         String line = scan.nextLine();
11         String[] str = line.split(" ");
12         System.out.println(setSynonyms(str[0], str[1]));
13         String line2 = scan.nextLine();
14         String[] str2 = line2.split(" ");
15         System.out.println(setSynonyms(str2[0], str2[1]));
16         System.out.println(isSynonyms(str2[0], str2[1]));
17         System.out.println(isSynonyms(str[0], str2[1]));
18         clearRelations();
19         System.out.println(isSynonyms(str2[0], str2[1]));
20         scan.close();
21     }
22 
23     public static int setSynonyms(String word1, String word2) {
24         map.put(word1, word2);
25         map.put(word2, word1);
26 
27         if (word1 != "" & word2 != "") {
28             // isSyn = true;
29             return 0;
30         } else
31             return -1;
32 
33     }
34 
35     public static boolean isSynonyms(String word1, String word2) {
36         if (!map.containsKey(word1)) {
37             isSyn = false;
38         }
39         if (map.containsKey(word1)) {
40             for (String key : map.keySet()) {
41                 for (int i = 0; i < key.length(); i++) {
42                     String value = map.get(word1);
43                     String value2 = map.get(value);
44                     if (value2.equals(word2)) {
45                         isSyn = true;
46                     } else if (word2.equals(map.get(word1)))
47                         isSyn = true;
48                 }
49             }
50 
51         } else
52             isSyn = false;
53         return isSyn;
54     }
55 
56     public static void clearRelations() {
57         Iterator it = map.keySet().iterator();
58         String key = null;
59         while (it.hasNext()) {
60             key = it.next().toString();
61             it.remove();
62 
63         }
64     }
65 }
热血高校3结局里旋风雄能打得过林田惠吗?
原文地址:https://www.cnblogs.com/crows/p/4711444.html