Вы попробовали Google Charts API ? - API веб-сервиса действительно не прибывают намного более простые. Это свободно использовать, простой реализовать, и диаграммы не выглядят слишком дрянными.
Вот моя версия: Уловки Java: самый быстрый способ сбора объектов в строке
StringBuilder buffer = new StringBuilder ();
String delim = "";
for (Object o: list)
{
buffer.append (delim);
delim = ", "; // Avoid if(); assignment is very fast!
buffer.append (o);
}
buffer.toString ();
В качестве дополнительного бонуса: если ваш код в цикле более сложен, то этот подход даст правильные результаты без сложных if ()
s.
Также обратите внимание, что с современными процессорами присвоение будет происходить только в кэше (или, возможно, только в регистре).
Заключение: Хотя этот код на первый взгляд выглядит странным, у него много преимуществ.
StringBuilder builder = new StringBuilder();
for (String st: list) {
builder.append(st).append(',');
}
builder.deleteCharAt(builder.length());
String result = builder.toString();
Не используйте "+" для контасенации строк. Это медленно.
Я бы использовал StringBuffer
для реализации этой функции. Строка
является неизменной, поэтому каждый раз, когда вы объединяете две String
s, создается новый объект.
Более эффективным является использование StringBuffer
:
String[] list = new String[] {"abc","def","ghi","jkl"};
StringBuffer str = new StringBuffer();
for (String s : list) {
str.append(s);
str.append(",");
}
str.deleteCharAt(str.length());
System.out.println(str); //automatically invokes StringBuffer.toString();
I'd bet that there are several classes named "StringUtil", "StringsUtil", "Strings" or anything along those lines on the classpath of any medium sized Java project. Most likely, any of them will provide a join function. Here are some examples I've found in my project:
org.apache.commons.lang.StringUtils.join(...)
org.apache.wicket.util.string.Wicket.join(...)
org.compass.core.util.StringUtils.arrayToDelimitedString(...)
As you might want to get rid of some external dependencies in the future, you may want to to something like this:
public static final MyStringUtils {
private MyStringUtils() {}
public static String join(Object[] list, String delim) {
return org.apache.commons.lang.StringUtils.join(list, delim);
}
}
Now that's what I call "elegant" ;)
for (int i = 0; i < list.length-1; i++) {
str = str + list[i];
str = str + ",";
}
str = str + list[list.length-1]