Всеми этими решениями являются достойные, но для базовой библиотеки, и независимость разделителя и достойная скорость важны. Вот функция, которая соответствует требованию, предполагающему, что язык имеет некоторую форму строкового разработчика.
public static string join(String[] strings, String sep) {
if(strings.length == 0) return "";
if(strings.length == 1) return strings[0];
StringBuilder sb = new StringBuilder();
sb.append(strings[0]);
for(int i = 1; i < strings.length; i++) {
sb.append(sep);
sb.append(strings[i]);
}
return sb.toString();
}
РЕДАКТИРОВАНИЕ: Я предполагаю, что должен упомянуть, почему это было бы более быстро. Главная причина состояла бы в том, потому что любое время Вы называете c = + b; базовая конструкция обычно c = (новый StringBuilder ()) .append (a) .append (b) .toString ();. путем многократного использования того же строкового разработчика объект мы можем уменьшить объем выделений и мусора, который мы производим.
И прежде чем кто-то согласится с оптимизацией, является злым, мы говорим о реализации общей библиотечной функции. Приемлемая, масштабируемая производительность является одним из требований их. Соединение, которое занимает много времени, является тем, которое это будет не часто используемым.
\ include
всегда использует \ clearpage
, что не совсем разумное значение по умолчанию. Он предназначен для целых глав, а не для подразделов (в любом случае, зачем вам нужны подразделы в отдельных файлах?).
Вы можете исправить это, используя \ input {filename}
или загрузив ] newclude
package и записать вместо него \ include * {filename}
.
Спасибо, Кембридж !
используйте \ include вместо \ input и используйте команду \ includeonly для выбора разделов для обработки