2

引数リストに従ってパターン文字列を作成する必要があります。引数が の場合、"foo", "bar", "data"パターンは次のようになります。"?, ?, ?"

私のコードは次のとおりです。

List<String> args;
...
for(String s : args) {
  pattern += "?,";
}
pattern = pattern.substring(0, pattern.length()-1);

それは正常に動作します。唯一の懸念は、s使用されていないことです。コードが少し汚れているようです。

これに対する改善点はありますか?

次のようなことを願っています:

for(args.size()) {
    ...
}

でも、どうやら無いらしい..

4

7 に答える 7

2

私は通常Haskell / Pythonスタイルでそれを行います-「_」で名前を付けます。そうすれば、変数が意図的に使用されていないことが明らかです。

int n = 0;
for (final Object _ : iterable) { ++n; }

ただし、IntelliJはまだ不平を言っています:)

于 2015-09-30T09:12:36.750 に答える
0

あなたが探しているのは、「結合」と呼ばれる概念です。Groovy のようなより強力な言語では、標準ライブラリで利用でき、たとえば、args.join(',')必要なものを取得するために書くことができます。Java を使用すると、 Commons Lang (あらゆる場所のすべての Java プロジェクトに含める必要があるライブラリ)StringUtils.join(args, ",")から同様の効果を得ることができます。

更新:元の回答で重要な部分を明らかに見逃していました。文字列のリストは、最初に疑問符に変換する必要があります。Commons Collections は、常に Java アプリに含める必要があるもう 1 つのライブラリであり、. 次に、最初に述べた結合に結果を渡します。もちろん、これは Java では少し扱いに​​くくなっており、より命令的なアプローチの方が適切かもしれません。CollectionUtils.transform(args,new ConstantTransformer<String, String>("?"))

比較のために、Groovy や他の多くの言語では、すべてを次のような方法で解決できますargs.collect{'?'}.join(',')。Java では、前述のユーティリティを使用すると、次のようになります。

StringUtils.join(
    CollectionUtils.transform(args, 
                              new ConstantTransformer<String, String>("?")),
    ",");

かなり読みにくい…

于 2013-10-21T05:19:09.987 に答える
0

Guava をお持ちの場合は、JoinerCollections.nCopiesを組み合わせてみてください。

Joiner.on(", ").join(Collections.nCopies(args.size(), "?"));
于 2013-10-21T04:58:05.713 に答える