代码之家  ›  专栏  ›  技术社区  ›  A.Torres

是否可以将集合转换为列表?[复制品]

  •  0
  • A.Torres  · 技术社区  · 6 年前

    我有一个函数应该返回一个列表。当函数解析文件并识别拼写错误的单词时,它应该建议不同的单词。我必须返回一个列表。然而,当我这样做的时候,我最终会得到一个相同的词反复建议。我意识到将“建议的”单词存储在一个集合中可以解决这个问题(这样我只存储任何给定建议的一个实例)。唯一的问题是我不能返回那个集合,因为返回类型是一个列表(同样,我不能更改这个)。有办法解决这个问题吗?

    我将提供以下功能。

    public static List<String> getSuggestions(String word){
        List<String> letters = Arrays.asList("a", "b", "c", "d", "e", "f", "g",
                                           "h", "i", "j", "k", "l", "m", "n",
                                           "o", "p", "q", "r", "s", "t", "u",
                                           "v", "w", "x", "y", "z"); 
        Set<String> suggestions = new HashSet();
        StringBuilder builder = new StringBuilder(word); 
        for(int i = 0; i <= builder.length(); i++){
            for(String string: letters){
                StringBuilder suggestion = new StringBuilder(builder.toString());
                suggestion.insert(i, string); 
                if(dictionary.contains(suggestion.toString().toLowerCase())){
                    suggestions.add(suggestion.toString());
                }
            }
        }
        for(int i = 0; i <= builder.length()-2; i++){
            for(String string: letters){
                StringBuilder suggestion = new StringBuilder(builder.toString());
                char one = suggestion.charAt(i + 1);
                char two = suggestion.charAt(i);
                suggestion.replace(i, i + 1, String.valueOf(one));
                suggestion.replace(i+1, i + 2, String.valueOf(two));
                if(dictionary.contains(suggestion.toString().toLowerCase())){
                    suggestions.add(suggestion.toString());
                }
            }
        }
        for(int i = 0; i <= builder.length(); i++){
            for(String string: letters){
                StringBuilder suggestion = new StringBuilder(builder.toString());
                suggestion.replace(i, i + 1, "");
                if(dictionary.contains(suggestion.toString().toLowerCase())){
                    suggestions.add(suggestion.toString());
                }
            }
       }
       return suggestions;
    }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Elliott Frisch    6 年前

    假设你想要一切井然有序

    Set<String> suggestions = new HashSet();
    

    Set<String> suggestions = new LinkedHashSet<>();
    

    然后改变你的决赛 return

    return suggestions;
    

    return new ArrayList<String>(suggestions);