public static String join(Collection<?> items,char separator){
  if (items == null)   return "";
  StringBuilder sb=new StringBuilder(items.size() << 3);
  boolean first=true;
  for (  Object o : items) {
    String item=String.valueOf(o);
    if (first) {
      first=false;
    }
 else {
      sb.append(separator);
    }
    appendEscapedTextToBuilder(sb,item,separator);
  }
  return sb.toString();
}

public static String join ( Collection < ? > items , char separator ) { if ( items == null ) return "" ; StringBuilder sb = new StringBuilder ( items . size ( ) << 3 ) ; boolean first = true ; for ( Object o : items ) { String item = String . valueOf ( o ) ; if ( first ) { first = false ; } else { sb . append ( separator ) ; } appendEscapedTextToBuilder ( sb , item , separator ) ; } return sb . toString ( ) ; }
creates a backslash escaped string , joining all the items .
