1. Java / Говнокод #9574

    +71

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    StringBuffer possibleNames = new StringBuffer();
    int max = item.getPossibleNames().length;
    for (int i = 0; i < max; i++) {
        ..
        possibleNames.append(ing.name + " " + ( i != (max-1) ? ", " : ""));
        ..
    }

    вставка запятых между элементами массива

    Запостил: itakethisname, 01 Марта 2012

    Комментарии (7) RSS

    • String s = StringUtils.join(myArray, ", ");
      Ответить
      • Хорошо, когда есть библиотеки.
        Ответить
        • Это для контроллера, для которого не написаны Run-Time Libraries?

          И, кстати, тогда уж, если не ошибаюсь, join(myArray, " , ") + " "; // хотя непонятно зачем так.
          Ответить
          • в примере "" нужен потому, что из тернарного оператора нужно вернуть хоть какое-то значение.
            Если уж писать такой метод самому, то нужно использовать StringBuilder.
            Ответить
            • Если вкратце, основная разница м/у StringBuilder и StringBuffer?
              Ответить
              • StringBuffer устаревший класс и был написан тогда, когда у разработчиков стандартной библиотеки был бзик на синхронизации. Все методы у буфера синхронизированы, т.е. он thread-safe. Однако в реальной жизни чаще всего конструкция строк происходит внутри одного метода (как в join), и каждый поток создаёт свой "буфер". Поэтому синхронизация - лишь дополнительный оверхед и тормоза. Если она нужна, её всегда можно включить явно.
                Ответить
            • join(myArray, " , ") + " " потому как ing.name + " " а не из-за ( i != (max-1) ? ", " : "")
              Ответить

    Добавить комментарий