2012-02-13 3 views
3

私は、コレクション(リスト)から重複を削除し、それらに参加したいという状況があります。 私はJoinerの拡張機能を作りたかったのですが、すべてのコンストラクターが非公開であるため不可能です。Joiner - skipDuplicates

は、ここで私たちが何をしたかのコードスニペットです:

Collection<String> tokens = newArrayList(); 
for (int i = 0; i < numOfFoundTitles; i++) { 
    if (!tokens.contains(titlesInRange.get(i).titleAsTokens)) { 
     tokens.add(titlesInRange.get(i).getTitleAsTokens()); 
    } 
} 
return titleTokensJoiner.join(tokens); 

任意の提案ですか? 私はFunction/Predicateについて考えましたが、そこには適していません。

エヤル

答えて

9
return titleTokensJoiner.join(ImmutableSet.copyOf(tokens)); 

、ショート甘い、そして正しい

感謝。 ImmutableSetは、元の入力の順序を保持しますが、最初に出現した後の要素の繰り返しの出現は無視します。

+0

うわー!ありがとう。 copyOfだけがtokenInRangeではなくトークンにあります:)(copy past - > fail test) –

+0

...いいえ、これはうまくいくはずです。あなたは 'ImmutableSet '。失敗したテストについて説明できますか? –

+0

titlesInRangeは文字列ではありません。私はすべてのコードを表示しませんでした。これは次のとおりです。private String createTokensString(List titlesInRange){ int numOfFoundTitles = Math.min(numberOfTitlesToTokenize、titlesInRange.size()); コレクショントークン= newArrayList(); for(int i = 0; i

関連する問題