0

我必须用一些文本的独特单词来制作一个词汇表。我将文本转换为字符串数组。现在我想要只有唯一单词的数组列表。所以第一步,将第一个字符串数组转换为List<Strings>(我猜?)所有双字都被过滤掉的地方。这是我的第一步,我该怎么做,我应该使用 aList<String>还是 another String[]

其次,我“读入”的下一个 String[] 应该更新词汇表List<String>,但只能从文本中添加新词。

它必须看起来像:

public List<String> makeVocabulary(String[] tokens){
     List<String> vocabulay = new ArrayList<>;
     //add unique words from 'tokens' to vocabulary
     return vocabulary;

}

TL; DR:我如何将一大堆转换String[]为一个只有来自'sList<String>的唯一单词?String[]

4

3 回答 3

1

查看您的代码后,您似乎每次运行此命令时都会清除词汇表,因此只能执行一次。如果您想让它更加模块化,请执行以下操作:

public class yourClass
{
    private List<String> vocabulary = new ArrayList<String>();

    public List<String> makeVocabulary(String[] tokens)
    {
        for( int i = 0; i < tokens.length; i++ )
            if( !vocabulary.contains( tokens[i] ) )
                vocabulary.add(tokens[i]);
        return vocabulary;
    }
}
于 2015-12-08T20:01:18.423 回答
1

要确定唯一令牌,请使用Set实现...

public List<String> makeVocabulary(String[] tokens){
 Set<String> uniqueTokens = new HashSet<String>();
 for(String token : tokens) {
    uniqueTokens.add(token);
 }
 List<String> vocabulay = new ArrayList<String>(uniqueTokens);
 return vocabulary;

}
于 2015-12-08T20:09:39.360 回答
1

实现目标的一种方法是使用 Set 类而不是字符串列表。您可以研究一下,例如下面的代码。

public List<String> makeVocabulary(String[] tokens){
 Set<String> temp = new HashSet<>;
 //add unique words from 'tokens' to temp
 List<String> vocabulary = new ArrayList<>;
 vocabulary.addAll(temp);
 return vocabulary;
}

如果你可以接受 Set 作为 makeVocabulary 的返回类型,你可以只返回 temp。

于 2015-12-08T20:15:31.557 回答