1

シリアルList<String>化するか、文字列表現を作成する必要があります。

たとえば、私は持っています:

myList.add("Bob");
myList.add("account");
myList.add("userId");

リストには可変数のアイテムを含めることができ、次の形式でシリアル化する必要があります。

\Bob\-\account\-\userId\

次のような for ループを実行できます。

String ss;

for (String s: myList) {
   s = "\\" + s + "\\";
   ss = s + "-";
}

ただし"-"、結果の末尾にはa がありますString ss

または、これを行うための Google Guava 関数が既にありますか?

4

7 に答える 7

7

グアバの使用:

String s = Joiner.on('-').join(Iterables.transform(list, new Function<String, String>() {
    @Override
    public String apply(String input) {
        return "\\" + input + "\\";
    }
});
于 2012-10-13T09:21:04.313 に答える
6

Guava を使用してこれを解決する簡単な方法は、Joinerです。

System.out.println("\\" + Joiner.on("\\-\\").join(myList) + "\\");
于 2012-10-13T10:01:19.957 に答える
5

Apaches Commons StringUtilsを簡単に使用できます。

 String ss = "\\" + StringUtils.join(myList.iterator(), "\\-\\") + "\\";
于 2012-10-13T09:17:24.953 に答える
1

まず、このような連結では StringBuilder を使用することをお勧めします。

次に、Apache Common Lang の StringUtils.join() メソッドを次のように使用して、同じことを実現できます。

ss = "\\" + StringUtils.join(myList.iterator(), "\\-\\") + "\\";
于 2012-10-13T09:18:05.450 に答える
0

次のようにループを変更することで修正できます。

String ss = "";

for (String s: myList) {
    s = "\\" + s + "\\";
    if(ss.equals("")) {
        ss = s;
    }
    else {
        ss += " - " + s;
    }
}
于 2012-10-13T09:13:10.760 に答える
0

おそらく他の解決策は、List size() に基づく昔ながらの for ループです。

私が行うもう1つのことは、文字列を連結するよりも効率的であるため、StringBufferを使用することです。内部的に文字列を連結すると、オブジェクトは破棄されて再作成されます。

int myListSize = myList.size();
StringBuffer ss = new StringBuffer(4);
for (int i=0; i < myListSize; i++) {
   ss.append("\\").append(myList.get(i)).append("\\");
   if (i < myListSize - 1) {
      ss.append("-");
   }
}

次に、StringBuffer から出力するには:

ss.toString();

個人的には、これらの for ループ (上記のように) の方が読みやすいと思います。

于 2012-10-13T09:14:55.527 に答える
0

私が知っている文字列結合の最も単純なコードは次のようになります。

String sep = "", out = "";
for (String s : myList) {
  out += sep + '\\' + s + '\\';
  sep = "-";
}
于 2012-10-13T09:22:58.970 に答える