Угловая схема дополнения стволом

Чтение всего файла, если вы хотите, чтобы только одна строка казалась немного чрезмерной. Следующее должно быть более эффективным:

  1. Используйте RandomAccessFile для поиска случайной позиции байта в файле.
  2. Ищите влево и вправо на следующий ограничитель строки. Пусть L - линия между ними.
  3. С вероятностью (MIN_LINE_LENGTH / L.length) возвращаем L. В противном случае начните с шага 1.

Это вариант отбраковка .

Длина линии включает символ (-ы) линии окончания, поэтому MIN_LINE_LENGTH> = 1. (Тем лучше, если вы знаете более жесткую привязку длины строки).

Стоит отметить, что время выполнения этого алгоритма не зависит от размера файла, а только от длины строки, то есть оно масштабируется намного лучше, чем чтение всего файла.

0
задан Chaki 18 January 2019 в 13:03
поделиться