Я могу использовать Наборы. EMPTY_LIST wihout UncheckedException?

В следующем решении, есть один проход по линии. Если комментарий был найден (//), мы прекращаем работу и печатаем его. поддержка (/* */) требует больше работы.

while (fgets(line, LINE_LENGTH, file) != NULL)
{
    size_t len = strlen(line);
    size_t i;

    for (i=0; i<len; i++)
    {
        if (line[i]=='/' && line[i + 1]=='/')
        {
            line[i] = '\0';
            break;
        }
    }
    fprintf(output, "%s", line);
}

обратите внимание на два момента в дополнение к логике:

  • при печати с использованием printf всегда используйте строку формата. Если строка содержит%, это может сделать неожиданные вещи.

  • не ставьте strlen в состояние цикла. Он генерирует множество ненужных циклов для вычисления длины.

15
задан Allain Lalonde 3 October 2008 в 23:16
поделиться

3 ответа

Путем выполнения следующего:

List<User> users = Collections.emptyList();

тип возвращенного списка от Collections.emptyList(); будет , вывел как String из-за левой стороны присвоения. Однако, если Вы предпочитаете не иметь этот вывод, можно определить его явно путем выполнения следующего:

List<User> users = Collections.<User>emptyList(); 

В этом конкретном экземпляре, это может появиться как избыточное большинству людей (на самом деле, я досмотрел очень мало кода до конца в дикой природе, которая использует явные аргументы типа), однако для метода с подписью: void doStuff(List<String> users) это было бы совершенно чисто, чтобы один вызвал doStuff() с явным аргументом типа следующим образом:

doStuff(Collections.<String>emptyList());
31
ответ дан 1 December 2019 в 01:46
поделиться
List<User> users = Collections.emptyList();
1
ответ дан 1 December 2019 в 01:46
поделиться

После создания пустого списка я рекомендовал бы хранить его как константу вместо того, чтобы создать новую каждый раз.

кроме того, существуют выигрыши в производительности к использованию Collections.emptyList() по сравнению с new ArrayList(0), хотя разница является, вероятно, небольшой. Список, возвращенный emptyList (), оптимизирован, чтобы быть неизменным пустым списком. Например, размер () метод просто возвращается 0, а не полевой поиск или независимо от того, что ArrayList делает.

1
ответ дан 1 December 2019 в 01:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: