【问题标题】:Is it possible to convert a Set into a List? [duplicate]是否可以将集合转换为列表? [复制]
【发布时间】:2019-04-28 17:50:32
【问题描述】:

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

我将提供以下功能。

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;
}

【问题讨论】:

  • 一个简单的谷歌搜索java convert set to list给了我大约一亿个结果
  • 给了我大约一亿个结果 - 仅此而已吗?
  • 我建议你在同一个双循环中做 3 件事,并避免在同一件事上循环 3 次;)

标签: java list set


【解决方案1】:

假设您希望一切都按顺序更改

Set<String> suggestions = new HashSet();

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

然后将您的最终return 更改为

return suggestions;

return new ArrayList<String>(suggestions);

【讨论】:

  • 当有一些重复要指出时,很少看到你回答;)
  • @azro 不熟悉网站上 100% 的问题!
  • 对,我也是,但这只是基本的。继续前进,祝你有美好的一天;)
猜你喜欢
  • 2011-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-07
  • 2017-02-27
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
相关资源
最近更新 更多