Here you can find the source of join(final Iterable extends CharSequence> elements, final String separator)
public static String join(final Iterable<? extends CharSequence> elements, final String separator)
//package com.java2s; /*//w ww .j av a 2s. c om * Copyright 2004-2010 the Seasar Foundation and the Others. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ import java.util.Iterator; public class Main { public static String join(final Iterable<? extends CharSequence> elements, final String separator) { final StringBuilder buf = new StringBuilder(); for (final CharSequence element : elements) { buf.append(element).append(separator); } if (buf.length() > 0) { buf.setLength(buf.length() - separator.length()); } return new String(buf); } public static String join(final Iterable<? extends CharSequence> elements1, final Iterable<? extends CharSequence> elements2, final String separator1, final String separator2) { final StringBuilder buf = new StringBuilder(); final Iterator<? extends CharSequence> it = elements2.iterator(); for (final CharSequence element1 : elements1) { if (!it.hasNext()) { throw new IllegalArgumentException("elements1 > elements2"); } final CharSequence element2 = it.next(); buf.append(element1).append(separator1).append(element2).append(separator2); } if (it.hasNext()) { throw new IllegalArgumentException("elements1 < elements2"); } if (buf.length() > 0) { buf.setLength(buf.length() - separator2.length()); } return new String(buf); } }