3

次のようなものがありますか、Apache Common LangまたはSpring Utilsこれのために独自のUtilメソッドを作成しますか?

List<String> list = new ArrayList<String>();
list.add("moo");
list.add("foo");
list.add("bar");

String enumeratedList = Util.enumerate(list, ", ");

assert enumeratedList == "moo, foo, bar";

私はphpでの使用を覚えていますimplode、これは私がjavaを検索するものです。

$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);
4

3 に答える 3

11

StringUtils.join(Object[] array, String delimiter)(commons-langから)次のように使用できます。

String enumeratedList = StringUtils.join(list.toArray(), ", ");
于 2010-03-10T14:10:28.930 に答える
4

GoogleコレクションJoinerクラスを提供します。これは次のように使用できます。

public class Main {

    public static void main(String[] args) {
        List<String> list = Lists.newLinkedList();
        list.add("1");
        list.add("2");
        list.add("3");
        System.out.println(Joiner.on(", ").join(list));
    }

}
于 2010-03-10T15:21:04.470 に答える
3

commons-langに依存したくない場合は、実装するのは非常に簡単です。また、リストを配列に変換して、リストを再び文字列に結合することもできません。代わりに、コレクションを繰り返し処理します。コレクションを使用するよりもさらに優れているのは、イテレータになる可能性のあるものすべてを処理するIterableを使用することです(ある種のストリームや長さが不明なコレクションでさえ)。

import java.util.Arrays;
import java.util.Iterator;

public class JoinDemo {
  public static String join(String sep, Iterable<String> i) {
    StringBuilder sb = new StringBuilder();
    for (Iterator<String> it = i.iterator(); it.hasNext();) {
      sb.append(it.next());
      if (it.hasNext())
        sb.append(sep);
    }
    return sb.toString();
  }

  public static void main(String[] args) {
    System.out.println(join(",", Arrays.asList(args)));
  }
}

例:

# javac JoinDemo.java
# java JoinDemo a b c
a,b,c
于 2010-03-10T14:16:38.280 に答える