I admit this is a little late (I found your exercise through google), but I think I have quite an elegant solution that is equivalent:
Code:
import static java.util.Arrays.asList;
import java.util.List;
import com.google.common.base.Joiner;
class UtilRefactored {
public static CharSequence format(List<CharSequence> source) {
return "Listing:\n" + addBrackets(Joiner.on("\n ").join(source));
}
public static CharSequence format(CharSequence... source) {
return format(asList(source));
}
private static String addBrackets(String text) {
String result = "[ " + text;
if (!result.endsWith(" ") && (!result.endsWith("]"))) {
result += " ";
}
return result + "]";
}
}
If you don't wish to depend on Google guava, you can also replace "Joiner.on("\n ").join(source)" by a method call to join("\n ", source) with the following join method
Code:
private static String join(String separator, CharSequence... source) {
StringBuilder text = new StringBuilder();
for (final CharSequence component : source) {
text.append(component);
text.append(separator);
}
if (text.length() == 0) {
return "";
}
// Remove excess last separator
return text.substring(0, text.length() - separator.length());
}