public static <T> String join(Collection<T> x, String separator) {
        StringBuilder result = new StringBuilder();
        for (Iterator<T> it = x.iterator(); it.hasNext();) {
            T item = it.next();
            if (item instanceof Number) {
                result.append(Op.str((Number) item));
            } else {
                result.append(item.toString());
            }
            if (it.hasNext()) {
                result.append(separator);
            }
        }
        return result.toString();
    }
public static < T > String join ( Collection < T > x , String separator ) { StringBuilder result = new StringBuilder ( ) ; for ( Iterator < T > it = x . iterator ( ) ; it . hasNext ( ) ; ) { T item = it . next ( ) ; if ( item instanceof Number ) { result . append ( Op . str ( ( Number ) item ) ) ; } else { result . append ( item . toString ( ) ) ; } if ( it . hasNext ( ) ) { result . append ( separator ) ; } } return result . toString ( ) ; }
Joins an array of elements by the given separator into a single string. The
elements are represented as strings utilizing the Op.str() method on each
element

@tparam T determines the class type of the value
@param x is the array of elements
@param separator is the string to add between the elements
@return a single string joining the array of elements by the given
separator